访问角度$ scope没有元素

时间:2016-09-28 20:17:45

标签: javascript angularjs

我找到的每个答案都涉及使用元素并从那里访问$scope

我想在控制器定义之外的javascript中访问给定控制器的范围,最好是控制器名称。这甚至可能吗?

为清楚起见,我正在尝试更新控制器内$scope上正在监视的变量。我想有一个独立的功能,我可以传递一些参数,可以为我的应用程序中的众多控制器执行此功能。

如果我以完全错误的方式解决这个问题,请纠正我。刚刚开始进入角度。

类似的东西:

var myapp = angular.module("myapp", []);

myapp.controller("myController1", function($scope, $http){
    $scope.specialVar = "some value";
});
myapp.controller("myController2", function($scope, $http){
    $scope.specialVar = "some other value";
});

var myFunction = function(controller, val){
    //set the value of specialVar for the passed controller to the passed value
    myapp.AccessController(controller).$scope('specialVar', val);
}

1 个答案:

答案 0 :(得分:3)

请记住,您的应用程序中可以包含任意数量的给定控制器实例,但只能有一个服务;服务是有效的单身人士。如果您能够假设只有一个给定控制器的实例,那么听起来您将该控制器视为一项服务,并且您应该只使用该服务。如果您能够假设只有一个实例,那么您绝对需要通过angular.element(domElement).scope()访问,否则您将继续很难选择你所谈论的众多实例中的哪一个。

请记住,如果您不想使用该元素查找范围,则可以始终使用服务和字典/对象从任意键映射到给定范围。