私は現在の状況にいます:(Backbone.Collection
しかし、それはまたあるべきですBackbone.Model
)、私はこの方法でクラスを拡張します(1)。
私が共有したい機能は次のとおりです:
1)すべての Backbone.Collections から、最終的には Backbone.Models からアクセスできるパブリック メソッドにする必要がありますstartPolling
2
)プライベート メソッドにする必要があります。stopPolling
executePolling
onFetch
すべての保管 方法と非公開方法startPolling
の間で共有するための最良の方法は何ですか?stopPolling
Backbone.Collection/Backbone.Model
executePolling
onFetch
私の考えは、新しいファイルを作成することですutils/backbone.polling.js
(2)。それは良い解決策ですか?
(1)
define([
'backbone',
'models/myModel'
], function (Backbone, MyModel) {
'use strict';
var MyCollection = Backbone.Collection.extend({
model: MyModel,
url: 'some_url'
initialize : function () {
_.bindAll(this);
},
startPolling: function () {
this.polling = true;
this.minutes = 2;
this.executePolling();
},
stopPolling: function () {
this.polling = false;
},
executePolling: function () {
this.fetch({success : this.onFetch});
},
onFetch: function () {
if (this.polling) {
setTimeout(this.executePolling, 1000 * 60 * this.minutes);
}
}
});
});
(2)
utils/backbone.polling.js
Backbone.Collections.startPolling = function () {
// code here
};
Backbone.Collections.stopPolling = function () {
// code here
};