2015-06-17 11 views
10

im neuen Ember-Framework aus. Ich möchte nur eine Funktion ausführen, die innerhalb des Aktions-Hooks definiert ist, wenn das Rendering abgeschlossen ist.So führen Sie eine Aktion in Ember Controller afterRender

var Controller = Ember.Controller.extend({ 
    actions: { 
    foo: function() { 
     console.log("foo"); 
    } 
    } 
}); 
Ember.run.schedule("afterRender",this,function() { 
    this.send("foo"); 
} 

aber der obige Code funktioniert nicht. Ich möchte nur wissen, ist es möglich, foo() afterRender zu laufen?

Antwort

30

Sie könnten init verwenden:

App.Controller = Ember.Controller.extend({ 
    init: function() { 
    this._super(); 
    Ember.run.schedule("afterRender",this,function() { 
     this.send("foo"); 
    }); 
    }, 

    actions: { 
    foo: function() { 
     console.log("foo"); 
    } 
    } 
}); 
+0

dies werde versuchen .. –

+0

Dank viel ... seine Arbeits .. –

+3

die Lösung verursachen Testfehler „Assertionsfehler kann: Sie haben auf Testmodus eingeschaltet, Die automatische Ausführung der Run-Schleife wurde deaktiviert. Sie müssen jeden Code mit asynchronen Nebenwirkungen in einem Lauf umbrechen. " Wie läuft man hier herum? – Roger

Verwandte Themen