我已经为backbone创建了一个mixin,我想知道是否有比这更好的方法来合并事件散列。
混合:
app.mixin.filter = {
events: {
'click .label': 'toggle',
'keyup .file-search': 'updateSearchFilter'
},
//more stuff
}查看:
app.DashboardView = Backbone.View.extend({
el: '.contentwrap',
dashEvents: {'click .project-btn': 'addProjectModal'},
initialize: function() {
//other stuff
_.defaults(app.DashboardView.prototype.events, this.dashEvents);
//other stuff
}
}
_.extend(app.DashboardView.prototype, app.mixin.filter);我特别不喜欢将事件哈希称为dashEvents。有没有什么方法可以让事件保持为“事件”?或者有没有标准的模式来处理这类问题?
发布于 2013-05-02 21:37:56
app.DashboardView = Backbone.View.extend({
el: '.contentwrap',
events : _.extend({}, app.mixin.filters.events, {
'click .project-btn': 'addProjectModal'
})
}发布于 2013-05-02 21:43:03
我已经在我的应用程序中这样做了:
app.DashboardView = Backbone.View.extend(_.defaults({
el: '.contentwrap',
events: _.defaults({
'click .project-btn': 'addProjectModal'
}, app.mixin.filter.events)
}, app.mixin.filter));在这里,我想出了稍微不同的方法:
app.mixin.filter = function () {
_.defaults(this.events, {
'click .label': 'toggle',
'keyup .file-search': 'updateSearchFilter'
});
_.defaults(this, {
// more stuff
});
}
app.DashboardView = Backbone.View.extend({
el: '.contentwrap',
events: {'click .project-btn': 'addProjectModal'}
}
app.mixin.filter.call(app.DashboardView.prototype);https://stackoverflow.com/questions/16339180
复制相似问题