当网页加载时,我有一个挖出的可观察数组填充了一些初始值,并且当用户与页面交互时,我想通过splice方法添加到可观察数组.我试图添加到数组的新项目与数组中的原始项目具有完全相同的属性,但是当我尝试将新项目拼接到现有数组时,我得到一个Knockout绑定错误,例如:" 错误:无法解析绑定.消息:ReferenceError:未定义ContactName;绑定值:text:ContactName ".即使相关属性确实存在于新数组中的所有项目上,也会发生此错误.我正在尝试在Knockout可观察数组上进行拼接,而不是底层数组对象,因为我希望绑定自动更新.拼接代码如下所示:vmContacts.Contacts.splice(vmContacts.Contacts().length,0,contactData2);.
我在这里创建了一个小提琴示例,以便您可以看到它的实际效果:http://jsfiddle.net/ak47/pMFwe/.单击"添加联系人"按钮时,您将在浏览器控制台中看到错误.
我想避免循环遍历新对象数组,为我需要添加的每个项目执行push(),这就是拼接应该工作的地方,但事实并非如此.这是Knockout中的已知问题还是我做错了什么?谢谢您的帮助!
您尝试contactData2将第三个参数作为第三个参数传递Array.splice但Array.splice不支持数组作为第三个参数.另见文档.
所以你需要写一些类似的东西
vmContacts.Contacts.splice(vmContacts.Contacts().length, 0,
contactData2[0], contactData2[1], contactData2[2], contactData2[3]);
Run Code Online (Sandbox Code Playgroud)
或者你可以push一起使用apply以"加入"你的两个数组:
vmContacts.Contacts.push.apply(vmContacts.Contacts,contactData2);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4350 次 |
| 最近记录: |