Angular.JS:我应该如何组织同时使用资源和范围的服务?

时间:2012-09-01 04:25:49

标签: angularjs

好的,这是交易。我有一个处理$resource$scope的服务,而且我对Angular.JS不太熟悉,相信自己能够正确地组织它。该服务可以将资源与维护与后端的活动连接的WebSockets相关联。每当后端通知服务对给定资源的更改时,资源的属性都会更改为匹配,因此网页会自动使用新值自动更新。

这个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方式,比如服务或提供商等。也许某种方式将“Frisch-ness”混入模型工厂(在这种情况下,MyModel)。但我无法完全理解如何做到这一点......

0 个答案:

没有答案