使用RactiveJS,设置为Ractive数据的对象变为“实时”,因为库已添加一些处理程序来检测数据中的更改。但是,如果我想在另一个不使用Ractive的位置使用相同的对象,比如说:
var objectForModuleB = objectForModuleA.get();
修改objectForModuleB
会影响objectForModuleA
中的数据,因为对象仍处于“实时”状态。我通过“执行stringify-parse”来解决它,以删除处理程序(我只使用数据。没有计算函数和日期对象。):
var objectForModuleB = JSON.parse(JSON.stringify(objectForModuleA.get()));
如果一遍又一遍地通过文档。到目前为止,我还没有在文档中遇到过类似的内容。
答案 0 :(得分:1)
最初在GitHub上回答。
你只需要深度克隆。 $.extend
是正确的工具。 JSON.parse(JSON.stringify())
也可能有效 - 取决于您的数据 - 但速度很慢。如果你不想使用jQuery,你可以创建自己的函数或者从jQuery的核心中获取它。
如果您只想阻止更多ractive实例之间共享数据,可以使用选项功能(v0.5.x):
new Ractive({
data: function () {
return {
x: 1,
y: 2
};
}
});
这样,将为每个ractive实例创建新数据。