$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
)。但我无法完全理解如何做到这一点......