Knockout observablearray引发了未定义的错误

时间:2014-01-21 16:45:07

标签: jquery knockout.js

我在将新值推入数组时遇到未定义的错误。

HTML:

 <select id="temp" data-bind="options:Original"></select>
 <select data-bind="options:dynamicaarry"></select>

视图模型:

var ViewModal=function(items) {
    this.dynamicaarry=ko.observableArray(items);
    this.Original=ko.observableArray(['volvo','saab','mercedes','audi']);
};

ko.applyBindings(new ViewModal(['four']));
$("#temp").change(function() {
    this.ViewModal.dynamicaarry.push('six'); //throws undefined error});});
}

是否可以在不使用jquery的情况下处理knockout中的selectedindexchange事件?

1 个答案:

答案 0 :(得分:1)

您正尝试在不同的上下文中调用ViewModal。所以,首先,你应该从更改事件处理程序中删除this,第二个,你不应该使用jQuery更改事件处理程序,你应该使用knockout绑定,而不是:

Html:

<select id="temp" data-bind="options:Original, event: { change: changeOriginal }"></select>

视图模型:

var ViewModal=function(items) {
    this.dynamicaarry=ko.observableArray(items);
    this.Original=ko.observableArray(['volvo','saab','mercedes','audi']);

    this.changeOriginal = function() {
        this.ViewModal.dynamicaarry.push('six');
    }
};

ko.applyBindings(new ViewModal(['four']));