在骨干视图中触发从select到函数的事件

时间:2013-08-01 15:40:07

标签: javascript html backbone.js backbone-views backbone-events

我试过四处寻找,但我可能没有足够精确地搜索过。 所以基本上我正在编写一个使用backbone.js

的网络应用程序

所以我的问题是我正在尝试回到视图来调用函数。

所以我有一个模板,其中包含ID为“sel”的选择。

我在视图A中渲染该模板。

select也有onchange =“callme()”。 (我使用jquery change(),这只是为了简单起见)

view A有callme()函数,但是当用户点击它时,控制台会说,callme undefined。

问题是假设callme()是全局的,A.callme()不起作用,因为它不是它的实例,this.callme()也不是因为'this'是select声明,并且html页面上的视图并不存在。

所以....我该怎么办?提前谢谢。

1 个答案:

答案 0 :(得分:1)

您需要直接从视图订阅您的活动并在那里处理控制事件。

MyView = Backbone.View.extend({ 

    events: {
        'change select': 'selectHandler'
    },

    selectHandler: function(event) {
       // do my stuff
    }

});

在这种情况下,selectHandler函数this将是当前视图的上下文,因为Backbone使用jQuery $.proxy将控制处理程序的执行委托给视图本身。要在处理程序中获取控件实例,您需要使用将返回控制对象的$(event.target)属性。

此外,您不需要onchange属性。

P.S。您的控件应该在控件中,该控件设置为Backbone视图的el属性。