sagt, dass ich verschachtelte Ansichten bin definieren, wie so (code example on JSFiddle):Ember.js: Wie verschachtelte Ansicht Instanzen zugreifen
App.ParentView = Ember.View.extend({
ChildView: Ember.View.extend({ ... }),
method: function() {
this.get('ChildView') // => this is the class, not the instance :(
}
});
{{#view App.ParentView}}
{{#view ChildView}}
...
{{/view}}
{{/view}}
Ich mag würde eine Menge von Attributen zwischen der übergeordneten Ansicht vermeiden Bindung und die Kinderansicht. Ich würde eher etwas wie this.getPath('ChildView.foo')
machen. Aber this.get('ChildView')
gibt die Klasse zurück, die ich mit Ember.View.Viewtend erstellt habe, nicht die Instanz, also kann ich nicht auf die Attribute zugreifen.
Gibt es eine kanonische Methode, um von einer Methode der übergeordneten Ansicht auf die aktuelle Instanz einer untergeordneten Ansicht zuzugreifen?
Scheint mir, die 'viewName' Bindung ist was die ember.js Autoren für Sie verwenden wollten,' _childViews' sieht private IMO. Und die Angabe einer ID hilft nicht, wenn Sie mehrere Instanzen davon haben. –
Danke, das ist sehr nützlich. Ich habe eine Konvention angenommen, die meine Klassen 'ChildView' (großgeschrieben) aufruft und' viewName = "childView" '(nicht großgeschrieben) für die Instanznamen verwendet. Dies macht es einigermaßen nicht verwirrend. –
@Bradley, in Ihrem Beispiel gibt es einen Unterschied zwischen '' 'getPath''' und' '' get''', wenn '' 'this''' sich auf die Elternansicht bezieht? –