Considérese una vista que define una lista de objetos:Cómo pasar eventos a una Vista principal, pasando al niño Vista que desencadenó el evento?
App.ListView = Ember.View({
items: 'App.FooController.content'
itemClicked: function(item){
}
)};
con la plantilla:
<ul>
{{#each items}}
{{#view App.ItemView itemBinding="this" tagName="li"}}
<!-- ... -->
{{/view}}
{{/each}}
</ul>
y la ItemView:
App.ItemView = Ember.View.extend({
click: function(event){
var item = this.get('item');
// I want to call function itemClicked(item) of parentView
// so that it handles the click event
}
})
Así que básicamente mi pregunta es ¿cómo puedo pasar las vistas de eventos a padres, especialmente en el caso donde la vista secundaria no es conocida por la vista secundaria? Entiendo que puede obtener una propiedad foo
de parentView con this.getPath('parentView').get('foo')
o this.getPath('contentView').get('foo')
. Pero, ¿qué pasa con una función (en este caso, itemclicked()
)?
pensé que prueba que, y no funcionó. Haré un jsFiddle para probarlo. Estoy bastante seguro de que 'this.get ('contentView'). ItemClicked (this.get ('item'));' (para pasar eventos a abuelos) no funcionará. –
@Zack Parece que funciona aquí: http://jsfiddle.net/tomwhatmore/FGyrV/1/ a menos que, por supuesto, haya entendido mal la pregunta. ¿Podría ser porque estaba usando 'getPath()' en lugar de 'get()'? –
Yeap, estaba usando getPath :) –