2013-01-06 27 views
8

Tôi đang sử dụng Ember.js trong ứng dụng của mình, nhưng có một điểm mà tôi cập nhật thuộc tính của ngữ cảnh (bộ điều khiển) nhưng ngay sau khi cập nhật có một trình phân tích cú pháp (MathJax) nhìn vào ô cho các trường được cập nhật để phân tích nó thành toán học. Tuy nhiên mặc dù bản cập nhật đang diễn ra, nó xảy ra sau khi mathjax tìm kiếm bản cập nhật. Những gì tôi cần làm là lực lượng ember để cập nhật xem hoặc chờ cho ember cập nhật trước khi tôi nói với mathjax để phân tích cú pháp html. Có cách nào để đạt được điều này?Làm cách nào để cập nhật chế độ xem theo cách thủ công trong Ember.js?

Trả lời

17

Đây là trường hợp sử dụng khá phổ biến. Để chỉ định mã sẽ thực thi sau khi các thay đổi của thuộc tính đã được thúc đẩy, hãy sử dụng một người quan sát. Ember kích hoạt các nhà quan sát sau khi nó lan truyền thành công sự thay đổi. Ví dụ:

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') 
}); 

Xem Ember Giám-không đồng bộ của Hướng dẫn và API tài liệu cho Ember.run: http://emberjs.com/guides/understanding-ember/managing-asynchrony/ http://emberjs.com/api/classes/Ember.run.html#method_next

+0

Cảm ơn bạn, những gì tôi cần là Em.run.next (this, function() {... – Akash

+0

Chế độ xem đã biến mất. Tôi nên kiểm tra tài sản ngay bây giờ ở đâu? – Cameron

Các vấn đề liên quan