2014-01-19 35 views
0

我是初學者在淘汰賽,而做樣品時,我試圖瀏覽我的頁面時得到錯誤信息。下面敲擊錯誤點擊

0x800a1391 - JavaScript runtime error: ItemToEdit is undefined

是我的代碼:

$(function() { 
    countries = [{ 
     name: France 
    }, { 
     name: Germany 
    }, { 
     name: Spain 
    }]; 

    var viewmodel = { 
     table: ko.observableArray(countries), 
     ItemToEdit: function() { 
      var editedItem = ko.dataFor(this); 
     }, 
    }; 
}); 

我的HTML:

<a href="#" data-bind="click :ItemToEdit">Edit</a> 
+0

可以請你發表的jsfiddle例子 –

回答

1

你沒有打電話給applyBindings,它結合您的視圖模型爲HTML。添加以下行創建VM後:

ko.applyBindings(viewmodel); 
0

像阿爾喬姆是說,你需要你粘貼函數中調用ko.applyBindings(viewmodel);:你可能調用applyBindings的地方,功能這會外

$(function() { 
    countries = [{ 
     name: France 
    }, { 
     name: Germany 
    }, { 
     name: Spain 
    }]; 

    var viewmodel = { 
     table: ko.observableArray(countries), 
     ItemToEdit: function() { 
      var editedItem = ko.dataFor(this); 
     }, 
    }; 
    ko.applyBindings(viewmodel); 
}); 

意思是它找不到viewmodel

1

如果你在一個foreach約束力或類似的迭代table,然後ItemToEdit不會在你的當前上下文,但其父上下文(在這種情況下也是根上下文)來代替。因此,你必須限定它:

<a href="#" data-bind="click : $parent.ItemToEdit">Edit</a> 

<a href="#" data-bind="click :$root.ItemToEdit">Edit</a>