Ồ, có câu trả lời của tôi!
Có một số cách bạn có thể quan sát Em.A()
thuộc tính. Bạn có .observes('a.[]')
, .observes('[email protected]')
và .observes('a.length')
. Khái niệm này cũng giống như bất kỳ tài sản nào trong Ember, bạn chỉ cần thao tác trực tiếp mảng đó và người quan sát nên kích hoạt. Rõ ràng bằng cách sử dụng phương pháp set
sẽ không hoạt động trên một mảng (Ember), vì vậy có lẽ đó là nơi bạn đã đi sai?
Tôi đã sửa đổi số jsfiddle cũ của mình thành tài khoản cho một mảng có thể quan sát được (tôi đã cập nhật mọi thứ lên phiên bản mới nhất). Tôi nghĩ rằng điều quan trọng cần lưu ý là mảng Ember không thực sự là một mảng - đó là một đối tượng với một số hàm và thuộc tính tùy chỉnh thực hiện các hàm javascript mảng thông thường của bạn. Vì vậy, bạn không thể làm một cái gì đó như: Em.A() = [1,2,3]
, vì loại Em.A
là một đối tượng, không phải là một mảng.
Một lưu ý hữu ích là ArrayControllers có một nội dung của một Ember Array, có nghĩa là bạn phải tuân thủ các mảng nội dung, không phải là nội dung bản thân (ví dụ: không quan sát arraycontroller.content
, nhưng thay vì quan sát arraycontroller.content.[]
).
Đây là lý do tại sao bạn phải quan sát thuộc tính kỳ lạ prop.[]
trên một mảng Ember, bởi vì giá trị của một mảng Ember không phải là những gì bạn mong đợi.
bạn có thể thiết lập một jsfiddle trong ví dụ không hoạt động của mình không? – intuitivepixel