2012-04-05 1 views
2

Ich binde ein Modell an meinen Controller und möchte Änderungen an seinen Feldern beobachten, damit ich einige Daten neu laden und eine Ansicht aktualisieren kann.Beobachten von Änderungen an jedem Feld in gebundenem Modell in Controller

Im Moment habe ich etwas wirklich nicht-DRY wie folgt aus:

goalController = Ember.Object.create({ 
    ... 
    recompute: function() { save model, load recomputed data from server } 
    ... 
    nameChanged: function() { this.recompute() }.observes('content.name'), 
    incomeChanged: function() { this.recompute() }.observes('content.income') 
}); 

Gibt es eine Ember-y Weg, dies zu tun?

Antwort

7

können Sie Setup mehrere Betrachter zu einer Zeit, so dass Sie Ihr Beispiel wie so umschreiben könnte:

goalController = Ember.Object.create({ 

    goalUpdated: function() { 
     // do your thing 
    }.observes("content.name", "content.income") 

}); 

Hier ist eine Geige: http://jsfiddle.net/rlivsey/upZDU/

+0

Sie sollten auch in der Lage sein, es zu schreiben, wie: ' '' goalController = Ember.Object.create ({ goalUpdated: function() {// mach dein Ding } .observes() "Inhalt {name, Einkommen}."}); '' ' – srt32

+0

Das würde @ str32 funktionieren, aber es kann wirklich hässlich für Modelle mit 5+ Eigenschaften zu sehen bekommen. Ich habe eine "Alarm" -Eigenschaft innerhalb des Modells erstellt, und ein Beobachter hat den Alarm innerhalb des Modells über alle Eigenschaften geschaltet, die ich vom Controller beobachten wollte. Endlich eine einzige Beobachtung über 'model.alarm'. Immer noch hässlich, aber der Controller braucht jetzt nicht die Interna des Modells in diesem Szenario. – robertodecurnex