Knockout Viewmodel + selecteditem - >嵌套列表“未定义”

时间:2014-09-17 08:54:23

标签: c# javascript jquery mvvm knockout.js

我有一个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”。 但至少它是什么。

提前致谢

1 个答案:

答案 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(), " ", " "));
}

更新,问题#2

this.SelectedClass是一个可观察的财产。要访问Persons属性,您需要像函数一样获取SelectedClass属性值:this.SelectedClass()