Knockout JS多个按钮,每个按钮都有一个点击功能

时间:2015-07-13 01:32:00

标签: javascript knockout.js

我正在尝试使用一堆按钮,当您单击按钮时,它会提醒您其名称。目前我的代码如下所示:

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/

1 个答案:

答案 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);

ViewModels