将对象添加到数组然后显示在表中

时间:2016-11-12 06:13:18

标签: javascript arrays knockout.js

我试图学习Knockout。 在我的小项目中,我想输入一个名字,一个姓氏,并将其添加到一个“人”的数组中。对象 - 然后使用foreach在表中显示列表。

https://jsfiddle.net/2pf07vdh/

我也是小提琴手的新手,所以不要认为淘汰赛正在加载(小复选框应该隐藏并显示内容,但事实并非如此),但有了这个,在我的编辑器中,我收到一个错误:

knockout-3.4.1.js:72 Uncaught ReferenceError: Unable to process binding "foreach: function (){return People }"(…)

屏幕加载时的情况。

然后当我尝试在我的数组中添加一个对象时,我得到了这个:

knockout-3.4.1.js:14 Uncaught TypeError: Cannot read property 'length' of undefined(…)

任何人都能明白为什么我这么挣扎吗?我想也许我无法宣布“人物”。像这样的对象?

1 个答案:

答案 0 :(得分:1)

在这一行:

self.People = ko.observableArray([Person]);

您正在创建一个可观察的数组,其中包含对类/函数的引用。如果您想创建一个真实的人,则必须使用new关键字。请注意,FirstName仍未定义。

self.People = ko.observableArray([]); // Opt 1. Initialize as empty list
self.People = ko.observableArray([new Person()]); // Opt 2. With empty person inside

MySelected有同样的错误。

您还必须修复一些未关闭的HTML标记。另外,我建议您将SaveDelete方法放在MyViewModel而不是window