我想实现一个可观察数组,并在该数组内部应该有可观察对象(JS对象)。并在视图中我迭代这个数组并获取对象并显示对象属性。假设有一个像下面这样的对象,如何在可观察数组内部敲除可观察对象
{"name":"john","age":21,"address":"No 25"}
想象一下,可观察数组是由上述对象组成的。
然后我想特定对象的改变单一财产(例如名称),并需要看到的视图的变化。
我怎样才能做到这一点使用淘汰赛?
谢谢。
我想实现一个可观察数组,并在该数组内部应该有可观察对象(JS对象)。并在视图中我迭代这个数组并获取对象并显示对象属性。假设有一个像下面这样的对象,如何在可观察数组内部敲除可观察对象
{"name":"john","age":21,"address":"No 25"}
想象一下,可观察数组是由上述对象组成的。
然后我想特定对象的改变单一财产(例如名称),并需要看到的视图的变化。
我怎样才能做到这一点使用淘汰赛?
谢谢。
如果你在视图模型中设置你的用户并且用knockout mapping来映射它,你应该得到想要的结果。例如:
myObservableArray.push(new UserViewModel({"name":"john","age":21,"address":"No 25"}));
var UserViewModel = function(data){
var self = this;
ko.mapping.fromJS(data, {}, self);
}
这样每个映射的属性都将是可观察的,当它们改变时,这将反映在您的标记中。
要将模型转换为可观察视图模型,可以使用ko.utils.arrayMap和ko.mapping.fromJS。
var source = [{"name":"john","age":21,"address":"No 25"}];
var vm = ko.utils.arrayMap(source, function (item) {
return ko.mapping.fromJS(item)
});
简单地定义一个新的模式为您的数据项,使每个属性可观察到的,就像这样:
var dataItemModel = function (name, age, address) {
this.name = ko.observable(name);
this.age = ko.observable(age);
this.address = ko.observable(address);
}
当你对他们的数据,循环,创建dataItemModel
(它有可观察的属性),然后将此项目添加到您的ObservableArray
。
截至目前,答案中引用的插件似乎已被放弃。 –
它仍然适用于最新版本的Knockout(3.4.0) –