2013-10-21 52 views
1

好吧,我需要重寫Backbone.View.prototype.constructor保存cid -> view對。我如何可以覆蓋backbone.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) 

但它使大量在其他庫(如提線木偶和把手)的錯誤。

回答

2

好發現的問題!

必須使用fn.apply(this,arguments)代替fn.apply(this,[options])

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全球那麼您需要任何其它軟件包做到這一點的加載。