0

我从这样的一个视图触发一个事件:

select: function () {
    // Shorthand for the application namespace
    var app = brickpile.app;
    // Trigger the selected event
    app.trigger('selected', this.model);
}

并绑定到另一个视图中的同一事件:

initialize: function () {
    // Shorthand for the application namespace
    var app = brickpile.app;
    // bind to the selected event
    app.bind('selected', this.selected);
},

在我的函数中,我得到了当前实例的 el 属性?

selected: function (model) {
    // find the input hidden located in this views el
    $(this.el)... // is undefined
},

我错过了什么?

4

1 回答 1

1

我会引用Backbone FAQ来回答你的问题

绑定“这个”

也许最常见的 JavaScript “陷阱”是这样一个事实,即当您将函数作为回调传递时,它的 this 值会丢失。使用 Backbone,在处理事件和回调时,您通常会发现依赖 Underscore.js 中的 _.bind 和 _.bindAll 很有用。

将回调绑定到 Backbone 事件时,您可以选择传递可选的第三个参数来指定稍后调用回调时将使用的 this。

尝试

app.bind('selected', this.selected, this);

或者

_.bindAll(this, 'selected');
app.bind('selected', this.selected);
于 2012-06-03T08:26:15.033 回答