首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >合并mixins和视图backbone.js的事件定义

合并mixins和视图backbone.js的事件定义
EN

Stack Overflow用户
提问于 2013-05-02 21:24:11
回答 2查看 141关注 0票数 1

我已经为backbone创建了一个mixin,我想知道是否有比这更好的方法来合并事件散列。

混合:

代码语言:javascript
复制
app.mixin.filter = {
events: {
    'click .label': 'toggle',
    'keyup .file-search': 'updateSearchFilter'
},
 //more stuff
}

查看:

代码语言:javascript
复制
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。有没有什么方法可以让事件保持为“事件”?或者有没有标准的模式来处理这类问题?

EN

回答 2

Stack Overflow用户

发布于 2013-05-02 21:37:56

代码语言:javascript
复制
app.DashboardView = Backbone.View.extend({
  el: '.contentwrap',
  events : _.extend({}, app.mixin.filters.events, {
    'click .project-btn': 'addProjectModal'
  })
}
票数 0
EN

Stack Overflow用户

发布于 2013-05-02 21:43:03

我已经在我的应用程序中这样做了:

代码语言:javascript
复制
app.DashboardView = Backbone.View.extend(_.defaults({
    el: '.contentwrap',

    events: _.defaults({ 
        'click .project-btn': 'addProjectModal'
    }, app.mixin.filter.events)

}, app.mixin.filter));

在这里,我想出了稍微不同的方法:

代码语言:javascript
复制
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);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16339180

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档