触发knockout.js的事件绑定

时间:2014-01-27 10:28:09

标签: jquery knockout.js touch

我刚开始学习Knockout.js而且遇到了一些麻烦,我需要一些帮助才能解决。

基本上我想将我的touchend事件添加到我的Knockout生成列表中。目前我正在做这样的事情:

HTML:

<ul data-bind="foreach: names">
  <li data-bind="text: $data"></li>
</ul>

JS:

var names = ['Tom','Jennifer','Jack','Poul'];

ko.observableArray(names);

ko.applyBindings(names);


$('li').on('touchend, function(){
 ... do something
});

但我认为这不是正确的方法吗?如何使用Knockout对我的'touchend'进行数据绑定(如果这样做的话)?

提前致谢:)

1 个答案:

答案 0 :(得分:8)

您可以使用knockoutjs事件绑定:

 <li data-bind="text: $data, event: { touchend: $parent.touchEndHandler }"></li>

http://knockoutjs.com/documentation/event-binding.html

你的viewmodel绑定看起来也不正确,试试这个:

function NamesViewModel() {
    var self = this;
    self.names = ko.observableArray(['Tom','Jennifer','Jack','Poul']);
    self.touchEndHandler = function(data, event) {
        var element = $(event.target);
        alert("TouchEnd Triggered");
        // can access self here which is the viewmodel
    };
}

var viewModel = new NamesViewModel();
ko.applyBindings(viewModel);

示例 - http://jsfiddle.net/infernalbadger/pjG8r/