gpt4 book ai didi

knockout.js - 将新的项目数组拼接到现有的 Knockout 可观察数组上会导致绑定(bind)错误

转载 作者:行者123 更新时间:2023-12-05 00:31:06 25 4
gpt4 key购买 nike

我有一个 knockout 的可观察数组,在网页加载时填充了一些初始值,我想在用户与页面交互时通过拼接方法添加到可观察数组中。我尝试添加到数组中的新项与数组中的原始项具有完全相同的属性,但是当我尝试将新项拼接到现有数组上时,我得到一个 knockout 绑定(bind)错误,例如:“错误:无法解析绑定(bind)。消息:ReferenceError:未定义联系人名称;绑定(bind)值:文本:联系人名称 “。即使有问题的属性确实存在于新数组中的所有项目上,也会发生此错误。我正在尝试在 Knockout 可观察数组上进行拼接,而不是在底层数组对象上进行拼接,因为我希望绑定(bind)自动更新。拼接代码如下所示: vmContacts.Contacts.splice(vmContacts.Contacts().length,0,contactData2);

我在这里创建了一个 fiddle 示例,因此您可以看到它的实际效果: http://jsfiddle.net/ak47/pMFwe/ 。单击“添加联系人”按钮时,您将在浏览器控制台中看到错误。

我想避免循环遍历新对象数组来为我需要添加的每个项目执行 push(),这就是拼接应该起作用的地方,但事实并非如此。这是 Knockout 中的一个已知问题还是我做错了什么?谢谢您的帮助!

最佳答案

您尝试通过 contactData2作为Array.splice的第三个参数但是 Array.splice不支持数组作为第三个参数。另见 documentation .

所以你需要写一些类似的东西

vmContacts.Contacts.splice(vmContacts.Contacts().length, 0, 
contactData2[0], contactData2[1], contactData2[2], contactData2[3]);

或者您可以使用 push连同 apply为了“加入”你的两个阵列:
vmContacts.Contacts.push.apply(vmContacts.Contacts,contactData2);

演示 JSFiddle.

关于knockout.js - 将新的项目数组拼接到现有的 Knockout 可观察数组上会导致绑定(bind)错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15415133/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com