我有一个所有视图的基类,然后在应用程序的每个部分,如配置文件,我也有一个基类.这样,共享模板和属性可以在我的应用程序中在许多级别上使用.
我知道如果你在Backbone视图中创建一个函数而不是一个对象文字,它将为你实例化,但我不知道如何使用它对我有利.我的问题是,自动扩展在基本视图中创建的事件的最佳方法是什么.
我知道一种可能性,我在视图初始化时,获取基本事件类并将当前事件扩展到它,但它似乎有点hacky,我将不得不在每个视图上复制此代码.如果您知道更好的方式,请分享.
谢谢.
Joh*_*nny 35
var ParentView = Backbone.View.extend({
'events': {
'click .parent-something': "onParentSomethingClick"
}
});
var ChildView = ParentView.extend({
'events': _.extend({
'click .something': 'onSomethingClick',
}, ParentView.prototype.events)
});
Run Code Online (Sandbox Code Playgroud)
它什么都不做,但这是迄今为止我见过的最简单的方式.
我还用另一种方式创建了一个要点:https://gist.github.com/1271041
以下是我在子视图中扩展父视图事件的方法:
var ParentView = Backbone.View.extend({
events: {
'click .link': 'onLinkClick'
}
});
var ChildView = ParentView.extend({
events: function(){
return _.extend({
'click .something': 'onSomethingClick',
}, this.constructor.__super__.events);
}
});
Run Code Online (Sandbox Code Playgroud)
注意:这仅适用于Backbone 0.5.3.在该版本之前,您无法将事件定义为函数.