KnockoutJS - 在没有引用的情况下传递可观察的值

时间:2016-03-18 04:53:07

标签: javascript arrays knockout.js

如何在没有引用的情况下将值从observable传递给observableArray? 任何想法。

问题

我的问题是当我将值推送到multiple时我希望该值应该只有3.但是当我更新single以清除所有值时,multiple值也会更新。

var self = {};

self.multiple = ko.observableArray();
self.single = ko.observableArray();

self.single.push(3);

self.multiple.push(self.single());

self.single([]);

console.log(ko.toJS(self.multiple));    

ko.applyBindings(self)

请参阅fiddle

更新

复制数组值的另一个方法是使用.slice()。请参阅其他问题heredemo here

1 个答案:

答案 0 :(得分:2)

这个solutionJSON.stringify创建对象的字符串表示然后JSON.parse然后恢复它,但引用丢失了:

var self = {};

self.multiple = ko.observableArray();
self.single = ko.observableArray();

self.single.push(3);

//only this row was changed
self.multiple.push(JSON.parse(JSON.stringify(self.single())));

self.single.push(2);

console.log(ko.toJS(self.multiple));


ko.applyBindings(self)