2014-10-03 14 views
6

Tôi gặp sự cố khi hiểu hành vi cô lập Ember.Component dự kiến. Đó là sự hiểu biết của tôi rằng việc hiển thị nhiều phiên bản của cùng một thành phần sẽ không dẫn đến thuộc tính được chia sẻ giữa các thành phần.Thuộc tính thành phần Ember không bị cô lập

Tôi thấy hành vi ngược lại, khi cập nhật thuộc tính trên thành phần (từ bên trong thành phần) cập nhật cùng thuộc tính đó trên các phiên bản khác của thành phần đó hiện được hiển thị trên trang.

Dưới đây là một ví dụ về vấn đề này: http://jsbin.com/naworoyimoto/1/edit

Đây có phải là một lỗi hay tôi hiểu lầm như thế nào cô lập hoạt động ở Ember.Component?

+0

thể trùng lặp của [Shared nhà nước trong thành phần Ember] (http://stackoverflow.com/questions/19070843/shared-state-in-ember -component) – sunrize920

Trả lời

16

Tôi nghĩ bạn đang gặp phải tính chất hài hước của các tham chiếu đối tượng JavaScript. Tôi đã chạy chính xác vấn đề này một lúc, và nó bật ra vì tôi đã định nghĩa các mảng trên các thuộc tính trong định nghĩa lớp, nó đã gây ra tất cả các cá thể của lớp đó để tham chiếu cùng một đối tượng mảng.

Cách tôi thường gặp phải vấn đề này là bằng cách đặt thuộc tính tôi muốn là mảng là null, sau đó trong phương pháp init tôi đặt các mảng. Điều này đảm bảo rằng mỗi cá thể tạo ra mảng riêng của nó, thay vì chia sẻ một tham chiếu mảng với các cá thể khác!

Dưới đây là ngã ba của tôi ví dụ jsbin của bạn với sửa chữa của tôi áp dụng: http://jsbin.com/xulidefikuyu/1/

+0

Tìm câu trả lời, cảm ơn bạn! –

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