我试过四处寻找,但我可能没有足够精确地搜索过。 所以基本上我正在编写一个使用backbone.js
的网络应用程序所以我的问题是我正在尝试回到视图来调用函数。
所以我有一个模板,其中包含ID为“sel”的选择。
我在视图A中渲染该模板。
select也有onchange =“callme()”。 (我使用jquery change(),这只是为了简单起见)
view A有callme()函数,但是当用户点击它时,控制台会说,callme undefined。
问题是假设callme()是全局的,A.callme()不起作用,因为它不是它的实例,this.callme()也不是因为'this'是select声明,并且html页面上的视图并不存在。
所以....我该怎么办?提前谢谢。
答案 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
属性。