2015-01-06 21 views
6

Tôi có một kịch bản trong thành phần emberjs, nơi quan sát không bị ảnh hưởng. Tôi đã tìm ra lý do là "thành phần chưa được chèn khi thuộc tính thành phần được quan sát được thiết lập."Trình theo dõi thành phần ember js không hoạt động

Câu hỏi của tôi là, điều này có thể được xử lý theo cách tốt hơn trong js ember không?

Giải thích tốt hơn có thể được tìm thấy trong jsbin dưới đây.

Not working Scenario

Working scenario

+0

biết chính xác là bạn đang cố gắng để thực hiện ở đây? Trong trường hợp này, cả hai chức năng quan sát sẽ được phục vụ tốt hơn như một thuộc tính tính toán (thông qua 'Ember.Computed'). – awgreenarrow08

+0

Đồng ý, các quan sát viên quá mức cần thiết trong cả hai trường hợp – Kingpin2k

+0

Giống như tôi đã đề cập trong các nhận xét, đây là một ví dụ và không phải là trường hợp sử dụng thực tế. Trường hợp sử dụng thực tế là một trường hợp lớn tôi nghĩ đến việc đơn giản hóa nó. Về cơ bản có rất nhiều tính toán trong người quan sát và nó không chỉ gán nó cho một tài sản khác Ngoài ra khi bạn nói "cả hai chức năng quan sát sẽ được phục vụ tốt hơn như là một tài sản tính toán" nếu bạn sử dụng tính toán trong thành phần nó sẽ không hoạt động Do cùng một lý do tại sao người quan sát không làm việc – wallop

Trả lời

14

Bạn có thể chỉ định .on('init') để buộc các nhà quan sát để chạy ngay sau khi khởi tạo; khác như @ Kingpin2k nói - họ không chạy

App.TextboxDisplayComponent = Ember.Component.extend({ 
    displayText: '',   

    boundProperty: '', 

    observeBoundProperty: function() { 
    this.set('displayText', this.get('boundProperty'));   
    }.observes('boundProperty').on('init') 
}); 

của bạn (không) làm việc ví dụ here

+1

chính xác những gì tôi muốn cảm ơn bạn Khi tôi đã thử điều này tôi nghĩ người quan sát sẽ chỉ bị trúng "on ('init')" và sẽ không bị ảnh hưởng khi những thay đổi thông thường xảy ra. Bây giờ tôi đã thử nghiệm nó và nó sẽ xảy ra ngay cả khi có một sự thay đổi – wallop

+0

Tuy nhiên tôi chỉ nhận ra lý do tại sao tôi didn sử dụng khái niệm này trước đó là tốt, có một bắt với điều này! observBoundProperty sẽ được exectued trên init ngay cả khi boundProperty không thay đổi. Nếu tôi muốn người quan sát để có được hit chỉ trên thay đổi sau đó nó sẽ không được giúp đỡ nhiều:) Nhưng tuy nhiên tôi có thể có một điều kiện kiểm tra bên trong nó và quan trọng nhất là một phiên bản sạch hơn nhiều! – wallop

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