0

我试过环顾四周,但我可能搜索得不够精确。所以基本上我正在编写一个使用backbone.js的网络应用程序

所以我的问题是我试图回到一个视图来调用一个函数。

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

我在视图 A 中呈现该模板。

该选择也有一个 onchange="callme()"。(我使用 jquery change(),这只是为了简单起见)

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

问题是 callme() 被假定是全局的, A.callme() 不起作用,因为它不是它的那个实例, this.callme() 也不起作用,因为 'this' 是 select 语句,并且该视图实际上并不存在于 html 页面上。

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

4

1 回答 1

1

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

MyView = Backbone.View.extend({ 

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

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

});

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

你也不需要onchange属性。

PS您的控件应该在设置为elBackbone视图属性的控件中。

于 2013-08-01T15:44:36.713 回答