Rozważmy View, który określa listę obiektów:Jak przekazywać wydarzenia do rodzica Widok, przekazywanie dziecka Widok, który spowodował wydarzenie?
App.ListView = Ember.View({
items: 'App.FooController.content'
itemClicked: function(item){
}
)};
z szablonem:
<ul>
{{#each items}}
{{#view App.ItemView itemBinding="this" tagName="li"}}
<!-- ... -->
{{/view}}
{{/each}}
</ul>
i 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
}
})
Więc w zasadzie moje pytanie brzmi: w jaki sposób mogę przekazać zdarzeń do widoków nadrzędnych, szczególnie w przypadku, gdy widok nadrzędny nie jest znany w widoku podrzędnym? Rozumiem, że można uzyskać właściwość foo
obiektu parentView z wartością this.getPath('parentView').get('foo')
lub this.getPath('contentView').get('foo')
. Ale co z funkcją (w tym przypadku, itemclicked()
)?
mi testować, że i to nie działa. Zrobię jsFiddle, żeby to przetestować. Jestem pewien, że 'this.get ('contentView'). ItemClicked (this.get ('item'));' (dla przekazywania zdarzeń do grand-parent) nie będzie działać. –
@Zack Wydaje się działać tutaj: http://jsfiddle.net/tomwhatmore/FGyrV/1/, chyba że źle zinterpretowałem to pytanie. Być może dlatego, że używasz 'getPath()' zamiast po prostu 'get()'? –
Yeap, używałem getPath :) –