我是淘汰赛的初学者,在做样本时我在尝试浏览我的页面时收到错误消息。
0x800a1391 - JavaScript运行时错误:ItemToEdit未定义
下面是我的代码:
$(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 :(得分:1)
您没有调用applyBindings
,它将您的视图模型绑定到html。创建vm后添加以下行:
ko.applyBindings(viewmodel);
答案 1 :(得分:1)
如果您在table
绑定等中迭代foreach
,那么ItemToEdit
将不会出现在您当前的上下文中,而是它的父上下文(在这种情况下是也是根上下文)而不是。因此,您必须符合条件:
<a href="#" data-bind="click : $parent.ItemToEdit">Edit</a>
或
<a href="#" data-bind="click :$root.ItemToEdit">Edit</a>
答案 2 :(得分:0)
就像Artem所说,你需要在你粘贴的功能中调用ko.applyBindings(viewmodel);
:
$(function () {
countries = [{
name: France
}, {
name: Germany
}, {
name: Spain
}];
var viewmodel = {
table: ko.observableArray(countries),
ItemToEdit: function () {
var editedItem = ko.dataFor(this);
},
};
ko.applyBindings(viewmodel);
});
你可能在该函数之外的某个地方调用applyBindings
,这意味着找不到viewmodel
。