2013-01-06 9 views
8

मैं अपने आवेदन में Ember.js का उपयोग कर रहा हूं, लेकिन एक बिंदु है जहां मैं दृश्य के संदर्भ (नियंत्रक) की एक संपत्ति अद्यतन करता हूं लेकिन अद्यतन के ठीक बाद एक पार्सर (MathJax) है जो अद्यतन फ़ील्ड के लिए डोम को देखता है इसे गणित में पार्स करने के लिए। हालांकि अद्यतन होने के बावजूद, यह मैथजेक्स अद्यतन के लिए दिखने के बाद होता है। मुझे ऐसा करने की ज़रूरत है कि एमएमटी को पार्स करने के लिए मैथजैक्स को बताए जाने से पहले एम्बर को अपडेट अपडेट करने के लिए मजबूर करें या एम्बर को अपडेट करने का इंतजार करें। क्या इसको हासिल करने के लिए कोई रास्ता है?Ember.js में मैन्युअल रूप से दृश्य को अपडेट करने के लिए कैसे?

उत्तर

17

यह एक काफी आम उपयोग-मामला है। उस कोड को निर्दिष्ट करने के लिए जो संपत्ति के परिवर्तनों के बाद निष्पादित होना चाहिए, पर्यवेक्षक का उपयोग करें। परिवर्तन सफलतापूर्वक प्रचार करने के बाद एम्बर पर्यवेक्षकों को ट्रिगर करता है। उदाहरण के लिए:

App.MathView = Ember.View.extend({ 
    controller: null, 
    template: Ember.Handlebars.compile("<div>{{myProperty}}</div>"), 

    myPropertyDidChange: function() { 
    // From here the controller value is changed but DOM has not been updated 
    Ember.run.next(this, function() { 
     // This code will run when after changes have propagated to the DOM 
     // Call MathJax parser here 
     // If needed you can access the view's DOM element via this.$() 
     alert("New property value is in dom: "+ this.$().text()); 
    }); 
    }.observes('controller.myProperty') 
}); 

Ember.run के लिए एंबर प्रबंध-Asynchrony गाइड और एपीआई डॉक्स देखें: http://emberjs.com/guides/understanding-ember/managing-asynchrony/ http://emberjs.com/api/classes/Ember.run.html#method_next

+0

धन्यवाद, मुझे जो चाहिए वह Em.run.next था (यह, फ़ंक्शन() {... – Akash

+0

दृश्य अभी चला गया है। अब मुझे संपत्ति परिवर्तन कहां देखना चाहिए? – Cameron

संबंधित मुद्दे