0
サービスから複数のコントローラのデータを更新したい。 1つの選択肢は、$rootScope
にデータをブロードキャスト/送信することです。サービスから複数のコントローラのデータを更新する
何人ものリスナーが必要です。リスナーは同じイベントを聞いている人もあれば、他の人も聞いている人もいます。イベントは数秒ごとに発送されます。
私は、コールバックを使用してそれらを登録解除する可能性のある実用的なソリューションを作成しました。奇妙なことは、他の誰かが似たような解決法を使っているのを見ていないということです。このような理由があるかどうか疑問に思います。
サービス
var callbacks = {};
var idCounter = 0;
function register(cb) {
var id = idCounter++;
callbacks[id] = cb;
return function() {
delete callbacks[id];
};
}
function send(data) {
for (var i in callbacks) {
callbacks[i](data);
}
}
コントローラ
var d = service.register(function(data) {
console.log(data);
});
$scope.$destroy(function() {
d();
});
だから、私の質問があると思います:
- 私は、この種のを使用してはならない理由を任意の理由がありますコールバックメカニズム。 (メモリリーク?)
- 代わりにイベントを使うべきですか?このスケールではパフォーマンスは関係ありませんか?
- 改善点?