出于此目的使用s客观上没有任何问题Backbone.Model
,但无论如何感觉很可疑。模型带有不属于“服务”或“实用程序”类型的额外行李。
相反,我为不太符合 Backbone Model-View-Collection-Router 范式的功能定义了一个更通用的事件基类。
define(['backbone', 'underscore'], function(Backbone, _) {
var Class = function() {
this.initialize.apply(this, arguments);
};
//give Class events and a default constructor
_.extend(Class.prototype, Backbone.Events, {initialize: function() {}});
//copy the extend feature from one of the backbone classes
Class.extend = Backbone.Model.extend;
return Class;
});
该类的行为类似于其他 Backbone 对象,因为它可以被extend
编辑,它的实例具有initialize
构造方法并且它们支持事件。您的示例之一,本地化服务,可能类似于:
var LocalizationService = Class.extend({
initialize: function(url) {
this.url = url;
this.fetch();
},
fetch: function({
var self = this;
$.ajax({
url:this.url,
success: function(response) {
self.response = response;
self.trigger('fetch:complete', self, response);
//etc...
}
});
}
});