将“当前”$scope
传递给AngularJS服务是否正确?
在这种情况下,我有一个知道它只被一个控制器使用的$service,并且我希望在$service方法本身中引用控制器的作用域。
这在哲学上是正确的吗?
或者我最好将事件广播到$rootScope,然后让我的控制器监听它们?
发布于 2013-03-20 04:56:59
要让控制器知道何时发生异步事件,请使用Angular promises。
要触发$apply
,您不需要作用域,您可以调用$rootScope.$apply
,因为在特定作用域中调用它和在根中调用它没有区别。
关于变量读取,如果你收到参数就更好了。但您也可以将其作为对象参数从作用域中读取,但我会使用参数,这将使您的服务接口更加清晰。
发布于 2014-08-23 00:34:56
是。您可以在初始化服务时将$scope传递给服务。在服务构造函数中,您可以将作用域分配给类似this._scope的内容,然后在服务中引用该作用域!
angular.module('blah').controller('BlahCtrl', function($scope, BlahService) {
$scope.someVar = 4;
$scope.blahService = new blahService($scope);
});
angular.module('blah').factory('blahService', function() {
//constructor
function blahService(scope) {
this._scope = scope;
this._someFunction()
}
//wherever you'd reference the scope
blahService.prototype._someFunction = function() {
this._scope['someVar'] = 5;
}
return blahService;
});
https://stackoverflow.com/questions/15509457
复制相似问题