1

好的,我需要覆盖Backbone.View.prototype.constructor以保存cid -> view对。

写了这个但得到了错误:

Backbone.Registry =
  items: {}
  register: (v)-> @items[v.cid] = v
  get: (cid)-> @items[cid]

fn = Backbone.View.prototype.constructor
Backbone.View.prototype.constructor = (options)->
  fn.apply(this,[options])
  Backbone.Registry.register(this)

但它在其他库(如木偶和车把)中产生了很多错误。

4

2 回答 2

2

好的,找到问题了!

必须使用fn.apply(this,arguments)而不是fn.apply(this,[options])

于 2013-10-21T13:14:44.443 回答
1

这是我的做法:

Backbone.Registry = function(opts) 
{
    // call backbone constructor
    Backbone.View.prototype.constructor.apply(this, opts);

    // your stuff
}

_.extend(Backbone.Registry.prototype, {

    }
});

_.extend(ReuseView.prototype, Backbone.View.prototype);
Backbone.Registry.extend = Backbone.View.extend;

如果要全局覆盖 Backbone.View,则需要在加载任何其他包之前执行此操作。

于 2013-10-22T06:34:30.113 回答