2011-10-25 102 views
2

我想爲每個骨幹類 - 模型,集合,路由器,視圖添加自定義方法。我怎樣才能做到這一點?backbone.js:如何向每個骨幹類添加自定義方法

下面是我在做什麼,直到如今....

Backbone.Router.prototype.method1 = function() { 
    console.log("I came here: router"); 
}; 
Backbone.View.prototype.method1 = function() { 
    console.log("I came here: view"); 
}; 
Backbone.Model.prototype.method1 = function() { 
    console.log("I came here: model"); 
}; 
Backbone.Collection.prototype.method1 = function() { 
    console.log("I came here: collection"); 
}; 

我猜必須有一個更好,更優雅的方式來做到這一點?

更新

這裏是我是如何實現它最後。感謝有關記錄@dira建議

http://jsfiddle.net/fsFNW/

回答

6

要嚴格解答問題,請http://jsfiddle.net/dira/bbnSE/

window.debug_factory = function(kind) { 
    return function(message) { 
     console.log("I came here: " + kind + " " + " " + message); 
    } 
}; 

Backbone.Model.prototype.debug  = window.debug_factory('model'); 
Backbone.Collection.prototype.debug = window.debug_factory('collection'); 

Course = Backbone.Model.extend({}); 
Courses = Backbone.Collection.extend({model: Course}); 

c1 = new Course({name: 'c1'}); 
courses = new Courses(); 
courses.add(c1); 

c1.debug('a'); 
courses.debug('b'); 
c1.debug('c'); 

如果您正在使用這個用於調試,我建議您在window.debug功能並使用更重要的信息(「提取」,「渲染」等),因爲「我來到這裏:模型」並不是很有用。