Backbone.js - 在哪里定义视图助手?

aar*_*ell 28 javascript model-view-controller backbone.js

我一直在踢Backbone.js的轮胎并在最近几周玩游戏,所以有点像菜鸟问题......

在backbone.js中定义和使用视图助手的"正确"方法是什么?

据我所知,定义助手在模板中使用的唯一真实位置是模型或集合本身.但是,当该帮助程序直接返回HTML时,这开始感觉有点脏.

有没有更好的办法?

cmp*_*lis 42

有几个不同的地方,我把视图助手与Backbone.js:

如果帮助程序特定于某个视图,请将其放在视图定义中:

var MyView = Backbone.View.extend({
  tagName: 'div',

  events: {
    ...
  },

  initialize: function() { ... },

  helperOne: function() {
    // Helper code
  },

  anotherHelper: function() {
    // Helper code
  },

  render: function() { 
    ... this.helperOne() ...
  }
});
Run Code Online (Sandbox Code Playgroud)

如果所有视图都使用帮助程序,请扩展Backbone View类,以便所有视图都继承此函数:

_.extend(Backbone.View.prototype, {
  helper: function() {
    // Helper code
  }
}
Run Code Online (Sandbox Code Playgroud)

如果您需要在视图之间进行更复杂的帮助程序共享,请让视图相互扩展:

var MyOtherView = MyView.extend({

  // ...

  render: function() { 
    ... this.helperOne() ...
  }
});
Run Code Online (Sandbox Code Playgroud)

我不确定什么是最佳实践(或者如果已经建立了最佳实践),但这些模式看起来相当干净且运行良好.