0

使用 RactiveJS,设置为 Ractive 数据的对象变得“活跃”,因为该库添加了一些处理程序来检测数据的变化。但是,如果我想在另一个不使用 Ractive 的位置使用相同的对象,例如:

var objectForModuleB = objectForModuleA.get();

修改objectForModuleB会影响其中的数据,objectForModuleA因为对象仍然是“活动的”。我通过“执行字符串化解析”来删除处理程序来解决它(我只处理数据。没有计算函数和日期对象。):

var objectForModuleB = JSON.parse(JSON.stringify(objectForModuleA.get()));

如果一遍又一遍地阅读文档。到目前为止,我还没有在文档中遇到过这样的事情。

4

1 回答 1

1

最初在GitHub 上回答。

你只需要深度克隆。$.extend是正确的工具。JSON.parse(JSON.stringify())也可能有效-取决于您的数据-但速度很慢。如果您不想使用 jQuery,您可以创建自己的函数或直接从 jQuery 的核心中获取。

如果您只想防止在更活跃的实例之间共享数据,您可以使用选项函数(v0.5.x):

new Ractive({
    data: function () {
        return {
            x: 1,
            y: 2 
        };
    }
});

这样,将为每个 ractive 实例创建新数据。

于 2014-07-25T22:54:46.870 回答