2014-01-21 36 views
1

我在將新值插入數組時遇到未定義的錯誤。Knockout observablearray thows未定義錯誤

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});}); 
} 

,並有可能處理在淘汰賽selectedindexchange事件,而不使用jQuery?

+0

您需要了解JavaScript中的「這個」關鍵詞:http://unschooled.org/2012/03/understanding-javascript-this/ –

+0

的聯繫是非常豐富的。感謝budy – Dhinesh

回答

1

您正試圖在不同的上下文中調用ViewModal。所以,首先,你應該從改變事件處理程序刪除this,第二個,你不應該使用jQuery修改事件處理程序,你應該使用淘汰賽結合,而不是:

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'])); 
+0

它像魅力一樣工作。 – Dhinesh