我正在尝试使用一堆按钮,当您单击按钮时,它会提醒您其名称。目前我的代码如下所示:
HTML:
<ul data-bind="foreach: items">
<button data-bind="text: name, click: alertName(name)"></button>
</ul>
JS:
ko.applyBindings({
items: [{"name":"Burt"},{"name":"Sam"},{"name":"Greg"}]
});
function alertName(name){
alert(name);
}
我遇到了一些错误:
未捕获的ReferenceError:无法处理绑定“foreach:function(){return items}”
消息:无法处理绑定“click:function(){return alertName(name)}”
消息:未定义alertName
有没有一种简单的方法可以在knockoutjs中实现这一目标? 我在这里有一个jsfiddle:http://jsfiddle.net/hny7295e/
答案 0 :(得分:2)
您应该创建一个ViewModel。请查看http://10.207.215.71:81/#/c/上的文档。 alertName
方法应该在此ViewModel上。由于该方法不在单个项目上,因此您需要使用$parent.alertName()
。循环中的当前项将通过knockout传递给alertName
方法。
function ViewModel() {
var self = this;
self.items = [{"name":"Burt"},{"name":"Sam"},{"name":"Greg"}];
self.alertName = function (item) {
alert(item.name);
};
}
var viewModel = new ViewModel();
ko.applyBindings(viewModel);