【问题标题】:touch event binding for knockout.js用于敲除.js 的触摸事件绑定
【发布时间】:2014-01-27 20:02:57
【问题描述】:

我刚开始学习 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”“数据绑定”(如果这样做的话)?

提前致谢:)

【问题讨论】:

标签: jquery knockout.js touch


【解决方案1】:

可以使用 knockoutjs 事件绑定:

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

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

你的视图模型绑定看起来也不对,试试这个吧:

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/

【讨论】:

  • 您可能想写event: { touchend: $parent.touchEndHandler },因为在视图中li 将在data-bind="foreach: names" 内...
  • @nemesv 谢谢,刚刚注意到并正在编辑您的评论:D
  • 感谢您的回答。你如何将“this”(被触摸的元素)传递给“touchEndHandler”方法?
  • @RichardDalton 什么编辑? :) 看不到 $(this) / this 传递给函数的位置?
  • @MichaelFalckWedelgård 我再次编辑。作为第二个参数传递的事件对象可用于查找触发事件的元素。您可以使用 $(event.target) 获取此元素
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-02-13
  • 1970-01-01
  • 1970-01-01
  • 2023-03-09
  • 2012-06-09
  • 1970-01-01
相关资源
最近更新 更多