0
我學習Knockout.js並使用with:binding
更改綁定上下文如下:淘汰賽:XXX是不是一個函數錯誤
HTML:
<div id="wrap" data-bind="with: currentCat()">
<h2 data-bind="text: name"></h2>
<h3 data-bind="text: level"></h3>
<div data-bind="text: count"></div>
<img src="" alt="cute cat" data-bind="click: $parent.incrementCounter, attr: {src: imgSrc}">
</div>
的Javascript:
var cat = function() {
this.name = ko.observable("Fossie");
this.imgSrc = ko.observable("--");
this.count = ko.observable(0);
this.nicknames = ko.observableArray(["Meow", "Johnny"]);
};
var viewModel = function() {
this.currentCat = ko.observable(new cat());
this.incrementCounter = function() {
this.currentCat().count(this.currentCat().count() + 1);
}
};
ko.applyBindings(new viewModel());
當我點擊圖片時,出現此錯誤:
Uncaught TypeError: this.currentCat is not a function
相同的代碼沒有使用with
綁定工作。任何人都可以請解釋我更改上下文後更改了什麼?
哇,這解決了這個問題。謝謝你,先生。您能否詳細說明'當作爲事件處理程序使用時,它會丟失它的上下文'以及綁定如何解決該問題? – akshayKhot
@akshayKhot http://stackoverflow.com/questions/20279484/how-to-access-the-correct-this-context-inside-a-callback –
謝謝你的鏈接。在使用'with'之前,我有'data-bind ='單擊:incrementCounter'和同樣的JS沒有綁定。它那時工作。'with'怎麼會使它失敗? – akshayKhot