2014-02-17 4 views
6

Gibt es ein Ereignis oder einen Hook, der verwendet werden sollte, um zu erfassen, wenn ein Controller nach der Instanziierung initialisiert oder für eine bestimmte Route neu initialisiert wird?Event für Controller Modell in Ember ändern?

Ich habe bereits versucht init() - aber mein Controller ist nur einmal für die Lebensdauer der Anwendung instanziiert, sondern unterstützt mehrere Modelle abhängig von der Route. Was ich erfassen muss, ist, wenn sich das Modell des Controllers ändert, oder ein Moment nach der Instanziierung, wenn sich die Route ändert.

Ich habe auch versucht, eine berechnete Eigenschaft zu setzen, aber es ist nicht wirklich angemessen, da ich ein Ereignis brauche, um eine Funktion auszulösen, wenn sich das Modell ändert - nicht nur wenn die Eigenschaft aufgerufen wird.

Jede Hilfe wird sehr geschätzt.


Bearbeiten: Aha! Ich habe komplett über die Tatsache nachgedacht, dass ich observes() auf meine Funktion einstellen kann, so dass es ausgelöst wird, wenn sich das Modell ändert.

So, das war meine Antwort folgendes zu tun:

dependency: function() { 
    console.log('the model has changed'); 

    //...other stuff... 
}.observes('model') 
+1

werfen Sie einen Blick hier http://emberjs.com/guides/routing/setting-up-a-controller/ – fanta

+1

Zaemz, bitte Setzen Sie das als Ihre Antwort und markieren Sie es als akzeptiert (wenn verfügbar). – Kingpin2k

+0

@ kingpin2k Wird tun. –

Antwort

8

Aus meiner edit:

Aha! Ich habe komplett über die Tatsache, dass ich beobachtet werden kann, auf meine Funktion, so dass es ausgelöst wird, wenn das Modell ändert.

So, das war meine Antwort folgendes zu tun:

dependency: function() { 
    console.log('the model has changed'); 

    //...other stuff... 
}.observes('model') 
+0

Hey, ist es eine gute Übung zu beobachten, ich lese irgendwo, dass die Leistung erhöht. – whyAto8

+0

@ whyAto8 Ich sehe keinen Grund, warum es eine schlechte Idee wäre. Die API hat sich in den letzten Versionen von Ember tatsächlich geändert (ich habe es seit einiger Zeit nicht mehr benutzt). Ich werde etwas lesen und meine Antwort aktualisieren. Im Moment würde ich auf die Dokumentation verweisen: https://guides.emberjs.com/v2.7.0/object-model/observers/ –

Verwandte Themen