consideri una visualizzazione che definisce un elenco di oggetti:Come passare eventi a una vista padre, passando la vista figlio che ha attivato l'evento?
App.ListView = Ember.View({
items: 'App.FooController.content'
itemClicked: function(item){
}
)};
con il modello:
<ul>
{{#each items}}
{{#view App.ItemView itemBinding="this" tagName="li"}}
<!-- ... -->
{{/view}}
{{/each}}
</ul>
e l'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
}
})
Quindi, in pratica la mia domanda è: come faccio a passare eventi alle viste genitore, specialmente nel caso in cui la vista genitore non sia conosciuta dalla vista figlio? Comprendo che è possibile ottenere una proprietà foo
di un parentView con this.getPath('parentView').get('foo')
o this.getPath('contentView').get('foo')
. Ma che dire di una funzione (in questo caso, itemclicked()
)?
ho pensato che prova che, e non ha funzionato. Farò un jsFiddle per testarlo. Sono piuttosto sicuro 'this.get ('contentView'). ItemClicked (this.get ('item'));' (per passare eventi a nonni) non funzionerà. –
@Zack Sembra funzionare qui: http://jsfiddle.net/tomwhatmore/FGyrV/1/ a meno che, naturalmente, non abbia frainteso la domanda. Potrebbe essere perché stavi usando 'getPath()' invece di solo 'get()'? –
Yeap, stavo usando getPath :) –