2012-12-25 20 views
6

Tôi có một số mã jQuery cần được chạy khi chế độ xem được hiển thị. Đối với ban đầu làm cho tôi có thể dễ dàng làmLàm cách nào để gắn kết với chế độ xem lại trong Ember.js?

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

nhưng kể từ khi phương pháp someStuff() là thao tác tính chất của các yếu tố trên, tôi cần phải chạy nó khi xem được tái rendered do các ràng buộc dữ liệu, bởi vì nó sẽ mất thuộc tính được tạo tùy chỉnh.

+1

thêm điều này. $(). SomeStuff() bên trong phương thức afterRender thay vì didInsertElement và cho tôi biết ... –

Trả lời

15

Nếu bạn muốn tái làm cho quan điểm khi một thuộc tính nào đó thay đổi thì những gì bạn muốn sẽ giống như thế này:

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

Nhưng nếu bạn đang tìm kiếm để chỉ lại làm cho xem sau view được tạo ra sau đó bạn muốn một cái gì đó như thế này:

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

NGUỒN:http://emberjs.com/api/classes/Ember.View.html

0

Trong add ition để giải thích của Akash, bạn sẽ muốn sử dụng hook didInsertElement thay vì móc init để chỉ tái render sau khi khung nhìn được tạo ra. Vì vậy, nó sẽ trông giống như:

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

Mặc dù, tôi không chắc chắn lý do tại sao bạn cần phải quay lại sau khi chế độ xem đã được hiển thị.

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