我试图学习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(…)
任何人都能明白为什么我这么挣扎吗?我想也许我无法宣布“人物”。像这样的对象?
答案 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标记。另外,我建议您将Save
和Delete
方法放在MyViewModel
而不是window
。