2012-10-18 33 views
1

我想知道Amplify是否可以轻松处理大量嵌套敲除可观察对象的大数据模型。 目标是在页面刷新后保存并恢复数据(视图)模型的当前状态。敲除 - 用放大保存状态

从几个例子看来,每个observable都需要扩展到使用本地存储。 大概可以应用globaly,但我不知道嵌套可观察对象将如何行为。 (即viewModel有很多可观察的变量,每个变量都包含具有更多可观察变量的json对象等)。 是否可以保存viewModel的状态,以便在页面刷新后以适当的方式恢复所有嵌套的observables? (另一个问题可能是性能,因为它必须在移动设备上使用)

有没有人有这类问题的经验?

+2

您可以使用映射插件将视图模型序列化/反序列化为JSON,然后使用放大来存储该字符串。查看http://knockoutjs.com/documentation/plugins-mapping.html –

回答

1

这可以完成,我正在做。尽管我将它分解为独立的模块来处理我的ajax调用和缓存。

需要注意的一点是,如果您存储了带有可观察对象的整个挖空视图模型,那么在将其提取回来时,数据将不会被恢复。这是因为你的观测值是函数而不是数据本身。

为此,您必须将可观察视图模型转换为正确的Javascript对象(如果使用映射插件,则使用ko.toJS或ko.mapping.toJS),然后将其存储。当您检索数据时,您必须通过视图模型发送它以重新创建观察值。

这并不像您想象的那么昂贵。使用映射插件很容易做到这一点。但是,如果阵列中存在大量数据,那么您应该重新考虑获取大量数据,特别是移动设备。