我有一个viewModel
var viewModel = {
Classes: ko.observableArray(data),
addPerson: function() {
SelectedClass.Persons.push(new Person(SelectedClass, " ", " "));
},
SelectedClass: ko.observable({
Persons: ko.observableArray([]),
Location: ko.observable("")
}),
};
ko.applyBindings(viewModel);
我使用Classes绑定主详细信息视图。选择一个类以获取该类中的“人员”列表。
我有一个按钮可以将人员添加到班级。 当我尝试点击它时,我得到:
ReferenceError:未定义人员。
为什么不能在SelectedClass中找到嵌套的Persons列表并推送到那个?
我用一些测试数据创造了一个小提琴。 http://jsfiddle.net/alexintime/n77ujya3/2/ 虽然在小提琴中我无法使节目细节按钮起作用,因此不能填写“SelectedClass”。 但至少它是什么。
提前致谢
答案 0 :(得分:1)
在JavaScript中,对整个对象成员的对象属性的任何访问都应该使用this
进行限定(这不是C#的情况,其中有少数边缘情况,其中您需要明确使用this
:
// Check that you need to get "SelectedClass" property value like a function call
// (Knockout's getter function):
addPerson: function() {
this.SelectedClass().Persons.push(new Person(this.SelectedClass(), " ", " "));
}
this.SelectedClass
是一个可观察的财产。要访问Persons
属性,您需要像函数一样获取SelectedClass
属性值:this.SelectedClass()
!