我有一个用于编辑提供者记录的表单。提供者记录与多个地址有关系,因此提供者可以拥有家庭,办公室,度假等地址类型。
来自服务器的json地址对象只带来了提供者所拥有的地址,因此如果提供者只有一个“休假”类型的地址,那么这是唯一的记录,但是在编辑表单中我必须要有所有地址类型,以便编辑现有地址类型或添加新地址类型。
我不知道我的方法是否正常,但我在我的表单中有一个“jsonBaseAddresses”,其中包含所有可能的地址类型,并且此对象使用Knockout绑定到表单(这实际上有效)所以我想要合并带有“jsonBaseAddresses”的“jsonRemoteAddress”,以便拥有“jsonBaseAddresses”,但与远程json对象中的数据合并。
同样,我不知道这是否是正确的方法。感谢任何帮助。这是我想要做的jsFiddle示例。
由于
答案 0 :(得分:1)
为什么不直接迭代远程地址并将它们推送到视图模型中的地址,如?
var vm = new App(jsonBaseAddresses );
for ( var i = 0; i < jsonRemoteAddresses.length; i++){
vm.addresses.push(new Address(jsonRemoteAddresses[i]);
}
等等......
要合并地址,您可以使用以下解决方案:
您可以将属性引入Address等于Equals并比较字段 识别唯一地址
选择此帖How to determine equality for two JavaScript objects?中的任何实现 获取地址哈希码并在上面的循环中比较哈希 要合并的地址的代码。我在我的一个中使用了这个解决方案 项目。并查看此http://documentcloud.github.com/underscore/#isEqual