0

将保持简短:我需要为我的应用程序构建不同的组件。我在这里所说的“组件”是一组方法和构造函数,它们在我的应用程序的许多地方重复出现,但不一定完全相同。

举个例子,考虑一个分页组件。它由几个方法、一个视图和一个模板组成:

var Pagination = function() {
  this.View = Backbone.View.extend({});
  this.method = function() {};
  this.method2 = function() {};
};

// Create instance
var myComponent = new Pagination();

大量抽象的代码,但给出了想法。现在,我创建了一个“组件”构造函数来帮助我完成任务。这很简单:

Component = function() {
    this.initialize.apply(this, arguments);
};

_.extend(Component.prototype, {
    initialize: function() {}
});

Component.extend = Backbone.Model.extend;

这允许我用稍微不同的方法或内容构建同一组件的多个实例,而不必一遍又一遍地重建相同的东西:

var Pagination = Component.extend({
  View: Backbone.View.extend({}),

  method: function() {},

  method2: function() {}
}};

// Create instance
var myComponent = new Pagination();

到目前为止,一切都很好。myComponent具有方法列表以及视图的构造函数。这就是问题所在:对于我的一些组件实例,我不仅需要扩展组件本身,还需要扩展其中的 Backbone 构造函数。例如,假设我想扩展(而不是替换)分页组件中的视图。那就是一切都倒下了。

这是我采用的最后一种方法,但基本思想是:我的应用程序中的组件经常重复,但它们之间略有不同。这些组件可能包括方法、主干构造函数和其中的原始值。我需要能够扩展这些,但如果需要,也能够扩展它的各个部分(主干构造函数)。有人知道如何实现这一点吗?

4

0 回答 0