2012-12-25 1 views
6

Ich habe einige jQuery-Code, der ausgeführt werden muss, wenn eine Ansicht gerendert wird. Für die erste mache ich leichtWie kann ich an eine Ansicht binden, die in Ember.js gerendert wird?

tun kann
App.FooView = Ember.View.extend({ 
    didInsertElement: function() { 
    console.log("the view was rendered"); 
    this.$().someStuff(); 
    } 
}); 

aber da die someStuff() Methode Eigenschaften der Ansicht Elemente zu manipulieren, muß ich es laufen, wenn die Ansicht neu gerendert aufgrund Datenbindungen, weil es das verlieren benutzerdefinierte generierte Eigenschaften

+1

fügen Sie das hinzu. $(). SomeStuff() innerhalb von afterRender Methode anstelle von didInsertElement und lassen Sie mich wissen ... –

Antwort

15

Wenn Sie möchten, dass die Ansicht neu machen, wenn ein bestimmtes Attribut ändert sich dann, was Sie würde wie folgt aussehen wollen:

App.FooView = Ember.View.extend({ 
    myProperty: 'This value might change', 
    myPropertyChanged: function() { 
     //Do some stuff here (maybe change the template) and call... 
     this.rerender(); 
    }.observes('myProperty') 
}); 

Aber wenn Sie schauen, um die Sicht nach der neu rendern Ansicht erstellt dann wollen Sie etwas mehr wie folgt aus:

App.FooView = Ember.View.extend({ 
    init: function() { 
     this._super(); 
     //Do some stuff here (maybe change the template) and call... 
     this.rerender(); 
    } 
}); 

QUELLE:http://emberjs.com/api/classes/Ember.View.html

0

In Add Nach Akashs Erklärung möchten Sie den didInsertElement -Hook anstelle des Init-Hooks verwenden, um nach dem Erstellen der Ansicht nur noch neu zu rendern. So würde es aussehen wie:

App.FooView = Ember.View.extend({ 
    didInsertElement: function() { 
     this.rerender(); 
    } 
}); 

Obwohl, ich bin mir nicht ganz sicher, warum Sie brauchen würden, um rerender nachdem die Ansicht bereits geleistet hat.

Verwandte Themen