よし、契約だ。$resource
私は と の両方を扱うサービスを持っていますが、$scope
Angular.JS に十分に慣れていないため、自分でそれを適切に整理することはできません。このサービスは、バックエンドへのアクティブな接続を維持する WebSocket にリソースを関連付けることができます。バックエンドが特定のリソースへの変更をサービスに通知するたびに、リソースの属性が一致するように変更されるため、Web ページはリアルタイムで新しい値で自動的に更新されます。
この Websockety の良さは "Frisch" と呼ばれ、私が現在整理している方法は次のとおりです。
このFrisch
クラスは伝統的で、Angular.JS モジュール システムから完全に独立しています。angularize
Angular.JS リソース バインディングを設定するメソッドがあります。
var Frisch = function(url) {
... create a websocket ...
this.angularize = function(scope, record) {
this.websocketCallback = function(attributes) {
... update `record` with the new values ...
scope.$apply(); scope.$digest();
}
};
};
一方、私のコントローラーは次のようになります。
var MyController = function(MyModel, $scope) {
$scope.myModel = MyModel.get(... stuff ...);
new Frisch('/some/websocket/url').angularize($scope, $scope.myModel);
};
MyController.$inject = ['MyModel', '$scope'];
だから、これは私の最初の Angular.JS プロジェクトであり、物事は間違いなくもっとうまく整理できると感じています。$scope
特に、 とリソースの両方を に渡さなければならないのは奇妙に感じangularize
ます。
サービスやプロバイダーなどのように、これを行うにはもっとAngular-yの方法があると思います。おそらく、フリッシュらしさをモデル ファクトリ (この場合は ) に「混ぜる」何らかの方法ですMyModel
。しかし、私はそれを行う方法について頭を包むことはできません...