首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >将当前作用域传递给AngularJS服务

将当前作用域传递给AngularJS服务
EN

Stack Overflow用户
提问于 2013-03-20 04:11:41
回答 2查看 69.3K关注 0票数 106

将“当前”$scope传递给AngularJS服务是否正确?

在这种情况下,我有一个知道它只被一个控制器使用的$service,并且我希望在$service方法本身中引用控制器的作用域。

这在哲学上是正确的吗?

或者我最好将事件广播到$rootScope,然后让我的控制器监听它们?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-03-20 04:56:59

要让控制器知道何时发生异步事件,请使用Angular promises

要触发$apply,您不需要作用域,您可以调用$rootScope.$apply,因为在特定作用域中调用它和在根中调用它没有区别。

关于变量读取,如果你收到参数就更好了。但您也可以将其作为对象参数从作用域中读取,但我会使用参数,这将使您的服务接口更加清晰。

票数 67
EN

Stack Overflow用户

发布于 2014-08-23 00:34:56

是。您可以在初始化服务时将$scope传递给服务。在服务构造函数中,您可以将作用域分配给类似this._scope的内容,然后在服务中引用该作用域!

代码语言:javascript
复制
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;

});
票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15509457

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档