Backbone.js如何进行事件绑定?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (44)

我正在使用Backbone.js,对于每个模型的视图,都有一个分段的控制类型UI元素。它们都是由一个ul和几个Li元素组成的。我希望绑定一个事件,这样当单击其中一个元素时,我可以确定单击了哪个元素并使用适当的值更新模型。

问题是主干绑定事件(这些事件在视图的事件散列中),因此回调函数中的“this”引用的是视图,而不是li元素。这意味着我无法确定哪些元素被点击了。如果我使用了一个普通的jQuery绑定,我可以将它绑定到li元素,但是我不再跟踪模型,所以我无法更新它。

提问于
用户回答回答于

jQuery:

onClick: function(e) {
  this;                // Still the view instance (as it should be).
  e.target;            // The element that was clicked.
  e.currentTarget;     // The element that was bound by the click event.
}

可以使用targetcurrentTarget事件对象。

用户回答回答于

示例主干代码如下所示:

MyView = Backbone.View.extend({
    events: {
        'click .item': 'handleClick'
    },

    handleClick: function(e) {
        this; // The view instance
        e.target; // The element that was clicked 
        e.currentTarget; // The element that was bound by the click event
    }
});

扫码关注云+社区

领取腾讯云代金券