映射选项中的关键功能不起作用

时间:2012-12-19 16:10:59

标签: javascript knockout.js knockout-mapping-plugin

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

他们使用此示例... http://knockoutjs.com/documentation/plugins-mapping.html#advanced_usage

但它说..

  

这样,每次映射插件检查子数组中的项时,它只会查看id属性以确定对象是否被完全替换或仅需要更新。

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

他们的例子很简单,我无法使用更真实的数据样本。这是我的问题的一个小问题... http://jsfiddle.net/rQfpr/1/

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

1 个答案:

答案 0 :(得分: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

-

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