2012-10-21 10 views
8

Kann mir jemand den Zweck von arrangedContent erklären.Ember.js und arrangedContent

die Dokumentation erklärt, dass es in Subklassen außer Kraft gesetzt werden kann:

Das Array, das die Proxy zu sein vorgibt. In der standardmäßigen ArrayProxy-Implementierung sind dies und der Inhalt identisch. Unterklassen von ArrayProxy können diese Eigenschaft überschreiben, um Dinge wie Sortieren und Filtern bereitzustellen.

Was ich verwirrt bin, ist seine Beziehung zum Inhalt. Ich kann in der Quelle sehen, dass es eine berechnete Eigenschaft auf dem Inhalt hat:

arrangedContent: Ember.computed('content', function(){ 
    return this.get('content'); 
} 

Ich glaube, ich in recht habe zu sagen, dass Sie sich nie auf die arrayProxy zum Inhalt sondern binden binden sollen.

Ich gehe davon aus, dass das gleiche gilt für arrangedContent?

Benutzt ich einfach den arrangedContent, um das Array nach Bedarf zu filtern und an den ArrayProxy selbst zu binden, oder fehlt mir etwas?

Antwort

10

Sie sind völlig richtig: Sie sollten immer den Proxy selbst anzielen, wenn Sie an Werte oder Triggermethoden wie addObject binden. Mit einem arrangedContent kann Ember die Eigenschaften der Sammlung wie ihre Sortierreihenfolge oder das ausgewählte Element bearbeiten, ohne sie auf dem zugrunde liegenden Array zu ändern.

Da ein einzelnes Array von Objekten die zugrunde liegenden Daten für viele Teile einer Anwendung sein kann, möchten Sie nicht unbedingt das Array selbst ändern.

Jame des Croft hat einen großen Führer sprechen über Proxies: http://matchingnotes.com/ember-array-proxy

+0

Wenn ich eine berechnete Eigenschaft nur auf Inhalte, wie oben, die arrangedContent berechnete Eigenschaft wird nur dann ausgelöst, wenn das Array initialisiert wird. Ich dachte, es könnte ausgelöst werden, wenn es an eine Lenkervorlage gebunden war. Gibt es noch etwas, was ich tun sollte? – dagda1

+1

Plus eine Million wenn ich könnte, für den verlinkten Leitfaden. Ein sehr gut geschriebenes Tutorial zu ArrayProxy, das war die Antwort, von der ich nicht wusste, dass ich gesucht habe. – chris