2

よし、契約だ。$resource私は と の両方を扱うサービスを持っていますが、$scopeAngular.JS に十分に慣れていないため、自分でそれを適切に整理することはできません。このサービスは、バックエンドへのアクティブな接続を維持する WebSocket にリソースを関連付けることができます。バックエンドが特定のリソースへの変更をサービスに通知するたびに、リソースの属性が一致するように変更されるため、Web ページはリアルタイムで新しい値で自動的に更新されます。

この Websockety の良さは "Frisch" と呼ばれ、私が現在整理している方法は次のとおりです。

このFrischクラスは伝統的で、Angular.JS モジュール システムから完全に独立しています。angularizeAngular.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。しかし、私はそれを行う方法について頭を包むことはできません...

4

0 に答える 0