knockout使用'观察'为某些属性映射对象数组
问题描述:
我想对下面的数组进行深层复制。并且result
应该只观察count
属性。knockout使用'观察'为某些属性映射对象数组
data = [{
id: 1,
code: 'ABC',
count: ko.observable(0)
},{
id: 2,
code: 'JKL',
count: ko.observable(5)
},{
id: 3,
code: 'QWE',
count: ko.observable(1)
}]
我试图但id
和code
也转化为可观。 目前我正在使用下面的代码来获得预期的结果。
var obj = ko.mapping.toJS(data);
var result = [];
obj.forEach(function(o){
var obs = ko.mapping.fromJS(o, {
'observe': "count"
});
result.push(obs);
});
// result will give the expected result
在这里,我已经使用forEach
到回路中的data
阵列中的每个对象。有没有办法避免forEach循环?或者如何只观察对象数组中的count属性。
答
可以避开forEach
以及仅观察count
这样的:
var result = ko.mapping.fromJS(data, {observe: 'count'});
console.log(result());
编辑:
根据该文件,我们甚至不需要提ko.observable
在我们的数据。它应该根据我们的'观察'参数简单地选择它。因此,也许你可能要修改data
这样的:
var data = [{
id: 1,
code: 'ABC',
count: 0
}, {
id: 2,
code: 'JKL',
count: 5
}, {
id: 3,
code: 'QWE',
count: 1
}];
,然后使用forEach
,
var result = [];
data.forEach(function(o){
result.push(ko.mapping.fromJS(o, {observe:'count'}));
});
console.log(result);
这是给你的,哪种方法你会更喜欢使用。
谢谢雷。 因此,如果我的数据没有observables(如答案中所述),只有第二种方法有效? –
是的,这是正确的 – Ray