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

标签 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()。看另一个问题here和一个 demo here .

最佳答案

这个呢solution (JSON.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)

关于javascript - KnockoutJS - 在没有引用的情况下传递可观察值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36076402/

相关文章:

java - 初始化数组列表的简洁方法

javascript - 如何在 bootstrap multiselect(Knockout 绑定(bind))中实现 optgroups

javascript - 空数组绑定(bind)元素在页面加载时消失

c# - knockout View 模型+所选项目->嵌套列表 "not defined"

javascript - 使用 mustache 时在 Couchapp 列表中超时

javascript - Ember 助手等待 ajax 请求

javascript - 在具有自动高度的 IFrame 中获取 Google 表单

javascript - 当用户移动时,我怎样才能得到一个标记来更新它的位置?

javascript - 为集合中的每个对象添加新属性

javascript - 检查 Javascript 数组以查看值是否以特定值开头