我有一个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);
我将主细节视图与类绑定。选择一个类以获取该类中的"人员"列表。
我有一个按钮可以将一个人添加到班级中。当我尝试点击它时,我得到:
ReferenceError:未定义人员
为什么它不能在SelectedClass中找到嵌套的Persons列表并推送到该列表?
我篡改了一些测试数据。http://jsfiddle.net/alexintime/n77ujya3/2/尽管在小提琴中,我无法让显示详细信息按钮工作,因此无法填充"SelectedClass"。但至少它是有意义的。
提前感谢
在JavaScript中,从整个对象的一个成员对对象属性的任何访问都应该用this
限定(这不是C#的情况,在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(), " ", " "));
}
更新,第2期
CCD_ 3是一个可观测的性质。为了访问Persons
属性,您需要像函数一样获得SelectedClass
属性值:this.SelectedClass()
!