Sto creando un'app ember.js che si collega anche ad altri plugin jQuery. Ho alcuni campi modulo su cui devo chiamare un plugin jQuery una volta che la vista è resa. Ho provato ad agganciarmi didInsertElement
, ma a quanto pare i valori per i campi del modulo associato non sono assegnati al momento dell'inserimento. Esiste un callback per quando viene eseguito il rendering completo della vista o quando i bind sono inizializzati?
vale a dire.
MyView: Ember.View.extend
#Boaring normal stuff here
didInsertElement: ->
$(".some-class").doSomething()
e
{{view Ember.TextField valueBinding="someField" class="some-class"}}
Non funziona perché i valori di .some-class
non sono ancora stati impostati.
Non voglio usare a setTimeout
e creare una condizione di gara.
risposte:
4 per risposta № 1Bene, quello che sta succedendo è che l'associazione testValue viene aggiornata dopo l'inserimento della vista. Quindi quello che puoi fare è chiamare $(".silly-field").doSomethingSilly();
dentro un Ember.run.next()
funzione.
Come scritto nei documenti:
Ember.run(myContext, function(){
// code to be executed in the next RunLoop, which will be scheduled after the current one
});