この目的で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;
});
extend
このクラスは、edが可能で、インスタンスにinitialize
コンストラクターメソッドがあり、イベントをサポートするという点で、他のBackboneオブジェクトと同じように動作します。例の1つであるローカリゼーションサービスは、次のようになります。
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...
}
});
}
});