0

我无法理解keyKnockoutJS 中映射插件的映射选项中的功能。根据文档,我了解关键功能将告诉映射插件使用什么属性来确定对象是新的还是旧的。

他们使用这个例子...... http://knockoutjs.com/documentation/plugins-mapping.html#advanced_usage

但它说..

这样,每次映射插件检查 children 数组中的项目时,它只会查看 id 属性来确定对象是完全替换还是只需要更新。

“需要更新”是什么意思?它会更新整个children对象吗?它只会更新children对象中已更改的属性?我很困惑。

他们的例子很简单,我无法让它与更真实的数据样本一起工作。这是我的问题的 jsFiddle ... http://jsfiddle.net/rQfpr/1/

在我的示例中,我试图仅UserMovies替换self.movies[1].

4

1 回答 1

0

这是一个可以帮助您理解交互的 JSFiddle:

注意:映射中的“更新”条目只是为了让我可以登录到控制台……除非您需要自定义更新的发生方式,否则不需要它。

http://jsfiddle.net/jearles/wgZ59/49/

点击“加载矩阵”,它将显示:

12
23
34

单击“更改”,它将重新加载矩阵:

24
45

查看我发布的控制台消息,您会看到:

Creating 1
Updating 1
Creating 2
Updating 2
Creating 3
Updating 3
Updating 2
Creating 4
Updating 4

这确认了映射插件正在执行的操作。

最初:

12 - Is created and updated
23 - Is created and updated
34 - Is created and updated

更新时:

12 - Is deleted
23 - Is changed to 24
34 - Is deleted
45 - Is added

--

“键”条目通过将特定属性指定为“键”来帮助映射插件确定哪些条目是新的或现有的;否则将比较整个对象是否相等。

于 2012-12-19T16:53:00.057 回答