Tôi có thể thiếu một cái gì đó thực sự ngớ ngẩn, (Ember newbie) nhưng tôi không thể tìm ra cách sửa đổi một mảng nằm dưới sự quản lý của Bộ điều khiển Ember của tôi, ngoài việc thiết lập một mảng hoàn toàn mới.Làm cách nào để sửa đổi các phần tử trong một mảng được quản lý bởi Bộ điều khiển Ember?
Ví dụ: Tôi có chức năng kiểm tra sau đây trong bộ điều khiển của tôi. Khi người dùng nhấp chuột, tôi muốn sửa đổi từng phần tử của mảng được kiểm soát (hoặc nó có thể là một phần tử riêng lẻ) với một giá trị mới.
Tôi hiểu rằng bạn đang phải trải qua "thiết lập" để làm cho những thay đổi được biết đến với Ember, vì vậy tôi nghĩ rằng điều này sẽ làm việc:
clickHandler:function(e){
var temp = this.get("itemList").copy(); // copy it
for (var i = 0; i < temp.length; i++) {
temp[i].desc = "CANCELLED"; // change it
}
this.set('itemList', temp); // put it back
}
tôi tạo một bản sao của mảng, sửa đổi nó, và sau đó đặt lại. Nhưng bằng cách nào đó Ember than phiền về dòng thứ 4, nơi tôi sửa đổi nội dung của temp [i] .desc, nói rằng tôi phải sử dụng Ember.Set. Tôi cho rằng tôi có thể sửa đổi bản sao "ngoại tuyến" và sau đó thiết lập lại, nhưng không đi và tôi không thể hiểu tại sao. Các hoạt động mảng khác, như shift/unshift/pop dường như hoạt động.
Cảm ơn bạn. Các bạn dành thời gian để giáo dục chúng tôi trên Stack Overflow thật tuyệt vời. Thật không may, cả hai giải pháp này đều không hoạt động đối với tôi. Trong cả hai trường hợp, tôi nhận được lỗi "Uncaught TypeError: Object #
Đề xuất của bạn hoàn toàn hợp lý, tôi không thể hiểu tại sao nó không hoạt động. Nếu tôi sử dụng một ArrayController và dòng: this.get ("nội dung"). SetEach ('desc', "CANCELLED"); sau đó tôi thấy tất cả các mục mẫu của tôi được đặt lại thành "ĐÃ HỦY", vì vậy tôi biết mọi thứ khác đang hoạt động, nhưng nếu tôi sử dụng "forEach", mục "tôi" được trả lại sẽ không chấp nhận cuộc gọi "đặt". :^( –
Tôi đã rất hạnh phúc quá khoảng 3 tháng trước đây khi mọi người giúp tôi bắt đầu. Bạn có thể đưa ví dụ của bạn vào một câu chuyện không? Tôi sẽ đăng một liên kết đến một mẫu cơ bản ember trong một vài phút. – mavilein