挖空视图模型 + 选定项 ->嵌套列表"not defined"



我有一个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()