【问题标题】:Click on "this" in a backbone view在主干视图中单击“this”
【发布时间】:2015-04-29 15:01:20
【问题描述】:

我是一个有骨干的新手,我的事件系统有点问题。

我有一个代表一个li元素的视图,当我点击它时我想做一些事情。

这是我的代码:

var IndicatorView = Backbone.View.extend({
  tagName: 'li',
  className: 'indicator',
  initialize: function(options){
    _.extend(this, _.pick(options, "controller"));
    this.model.on('change', this.render, this);
    var self=this ;
    this.$el.on("click", function(){
      alert(self.model.get('name'));
    })
  },
  render: function(){
    this.$el.html(this.model.get('name'));
    return this; // enable chained calls
  }
});

目前,它可以工作,但使用 jQuery 事件。我怎样才能对骨干事件做同样的事情?谢谢你的回答:)

【问题讨论】:

    标签: javascript jquery events backbone.js


    【解决方案1】:

    使用空选择器将事件绑定到视图el

    var IndicatorView = Backbone.View.extend({
        tagName: 'li',
        className: 'indicator',
    
        events: {
            'click': function() {
                alert(this.model.get('name'));
            }
        },
    
        initialize: function(options){
            _.extend(this, _.pick(options, "controller"));
    
            // listenTo is recommended over on
            // http://backbonejs.org/#Events-listenTo
            this.listenTo(this.model, 'change', this.render);
       },
       render: function(){
           this.$el.html(this.model.get('name'));
           return this; // enable chained calls
       }
    });
    

    更多信息请见http://backbonejs.org/#View-delegateEvents

    【讨论】:

    • 它有效,非常感谢您的回答和关于listenTo的建议:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多