2013-06-04 42 views
11

Tôi muốn thực hiện một mảng quan sát và bên trong mảng đó phải có các đối tượng quan sát được (đối tượng JS). Và theo quan điểm tôi đang lặp mảng này và nhận đối tượng và hiển thị các thuộc tính đối tượng. Giả sử có một đối tượng như sau,Cách thực hiện Knockout các đối tượng quan sát được bên trong dãy quan sát

{"name":"john","age":21,"address":"No 25"} 

Hãy tưởng tượng mảng quan sát được bao gồm các đối tượng như trên.

Sau đó, tôi muốn thay đổi đơn thuộc tính (ví dụ:) của đối tượng cụ thể và cần xem thay đổi trên chế độ xem.

Tôi có thể làm điều này bằng cách loại trực tiếp bằng cách nào?

Cảm ơn.

Trả lời

9

Nếu bạn thiết lập người dùng của mình trong chế độ xemMô hình và ánh xạ nó với knockout mapping bạn sẽ nhận được kết quả mong muốn. Một cái gì đó như:

Bằng cách này, mỗi thuộc tính được ánh xạ sẽ có thể quan sát được và khi chúng thay đổi, điều này sẽ được phản ánh trong đánh dấu của bạn.

+0

Hiện tại, plugin được tham chiếu trong câu trả lời dường như bị bỏ qua. –

+0

Nó vẫn hoạt động với phiên bản Knockout mới nhất (3.4.0) –

2

Để chuyển mô hình thành mô hình chế độ xem có thể quan sát, bạn có thể sử dụng ko.utils.arrayMapko.mapping.fromJS.

var source = [{"name":"john","age":21,"address":"No 25"}]; 
var vm = ko.utils.arrayMap(source, function (item) { 
    return ko.mapping.fromJS(item) 
}); 

See fiddle

2

Đơn giản chỉ cần xác định một mô hình mới cho các hạng mục dữ liệu của bạn và làm cho mỗi tài sản quan sát được, như thế này:

var dataItemModel = function (name, age, address) { 
    this.name = ko.observable(name); 
    this.age = ko.observable(age); 
    this.address = ko.observable(address); 
} 

Khi bạn nhận được dữ liệu của bạn, vòng qua chúng, tạo dataItemModel của bạn (có thuộc tính quan sát được) và sau đó thêm mục này vào ObservableArray của bạn.

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