1

バックボーン用の 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 を呼び出すことに特に満足していません。イベントを「イベント」として保持する方法はありますか? または、この種の問題を処理するための標準パターンはありますか?

4

2 に答える 2

0

私は自分のアプリでこれを行ってきました:

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);
于 2013-05-02T13:43:03.153 に答える
0
app.DashboardView = Backbone.View.extend({
  el: '.contentwrap',
  events : _.extend({}, app.mixin.filters.events, {
    'click .project-btn': 'addProjectModal'
  })
}
于 2013-05-02T13:37:55.730 に答える