2012-01-16 27 views

Trả lời

64

Bạn cần ghi đè didInsertElement vì đó là "Được gọi khi phần tử của chế độ xem được chèn vào DOM. Ghi đè hàm này để thực hiện bất kỳ thiết lập nào yêu cầu phần tử trong nội dung tài liệu".

Bên trong cuộc gọi lại didInsertElement, bạn có thể sử dụng this.$() để lấy đối tượng jQuery cho phần tử của chế độ xem.

tham khảo: https://github.com/emberjs/ember.js/blob/master/packages/ember-views/lib/views/view.js

+10

Trong override lại didInsertElement, bạn có thể tham khảo 'này. $() 'Để có được một xử lý để wrapper jquery cho các phần tử DOM. –

+3

Marc: Bạn cũng có thể thấy bài viết này hữu ích. Nó đã giúp tôi trở lại trong ngày khi tôi đã nhận được JUI và SC2 làm việc. LƯU Ý: Một số api có thể đã thay đổi kể từ khi bài viết này được viết để nó có thể không được cắt và dán mã. [http://yehudakatz.com/2011/06/11/using-sproutcore-2-0-with-jquery-ui/](http://yehudakatz.com/2011/06/11/using-sproutcore-2 -0-với-jquery-ui /) –

+0

Cảm ơn rất nhiều!Câu trả lời này cộng với hai ý kiến ​​đó thực sự đã giúp tôi hình dung ra điều này. Tôi rất ấn tượng với sự hỗ trợ cộng đồng EmberJS cho đến nay. –

0

Bạn cần phải sa thải bất cứ điều gì bạn muốn trong didInsertElement callback trong View của bạn:

MyEmberApp.PostsIndexView = Ember.View.extend({ 

    didInsertElement: function(){ 
    // 'this' refers to the view's template element. 
    this.$('table.has-datatable').DataTable(); 
    } 

}); 
+1

Nếu bạn gọi nó như thế này, bạn cần phải thêm this._super() ở trên cùng. – SwarmIntelligence

1

Bạn cũng có thể sử dụng afterRender phương pháp

didInsertElement: function() { 
Ember.run.scheduleOnce('afterRender', this, function() { 
    //Put your code here what you want to do after render of a view 
    }); 
} 
0

Ember 2. x: Chế độ xem không được dùng nữa, hãy sử dụng thành phần thay vì

Bạn phải hiểu vòng đời của linh kiện để biết khi nào những điều nhất định xảy ra.

Khi các thành phần được hiển thị, được hiển thị lại và cuối cùng bị xóa, Ember cung cấp các vòng đời cho phép bạn chạy mã tại các thời điểm cụ thể trong cuộc sống của một thành phần.

https://guides.emberjs.com/v2.6.0/components/the-component-lifecycle/

Nói chung, didInsertElement là một nơi tuyệt vời để tích hợp với thư viện của bên thứ 3.

móc này đảm bảo hai (2) điều,

  1. yếu tố của thành phần đã được cả hai tạo ra và chèn vào DOM.
  2. Thành phần của thành phần có thể truy cập được thông qua phương thức $() của thành phần.

Trong bạn cần JavaScript để chạy bất cứ khi nào các thuộc tính thay đổi

Chạy mã của bạn bên didRender móc.

Một lần nữa, xin vui lòng đọc các tài liệu hướng dẫn chu kỳ trên để biết thêm thông tin

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