我无法理解KnockoutJS中映射插件的映射选项中的key
函数。根据文档我理解,关键功能将告诉映射插件使用什么属性来确定对象是新的还是旧的。
他们使用此示例... http://knockoutjs.com/documentation/plugins-mapping.html#advanced_usage
但它说..
这样,每次映射插件检查子数组中的项时,它只会查看id属性以确定对象是否被完全替换或仅需要更新。
“需要更新”是什么意思?它会更新整个children
对象吗?它只会更新children
对象中已更改的属性?我很困惑。
他们的例子很简单,我无法使用更真实的数据样本。这是我的问题的一个小问题... http://jsfiddle.net/rQfpr/1/
在我的示例中,我试图仅替换UserMovies
中的self.movies[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'条目通过将特定属性指定为“密钥”,帮助映射插件确定哪些条目是新的或现有的;否则整个对象的比较是相等的。