从运行块我可以在另一个控制器而不是$ rootscope中调用角度范围功能

时间:2016-12-14 08:10:31

标签: javascript angularjs angularjs-directive angularjs-scope angular-ui-router

我需要在runblock的某个控制器中调用angular Scope函数。我可以调用该函数,或者需要使用rootScope或$ scope.apply。

第一种方法:

myAPP.run(function ($rootScope, $state,$scope) {

  $scope.menupage();

});

 var SampleController = function ($scope,$localStorage) {

$scope.menupage =function()
{
// some logic
};
});

    SampleController.$inject = ['$scope','$localStorage'];

否则需要像这样使用

myAPP.run(function ($rootScope, $state,$scope) {

 $scope.$apply(function() {
  $scope.menupage();

});

});



var SampleController = function ($scope,$localStorage) {


$scope.menupage =function()
{


// some logic
};


});
SampleController.$inject = ['$scope','$localStorage'];

1 个答案:

答案 0 :(得分:0)

myAPP.run(function ($rootScope, $state,$scope) {

此处不能将$scope个对象作为第三个参数,因为$scope$controller对象都是在compiling and linking phase期间创建的,run跟随run执行$rootScope块的阶段。所以你不能在你的跑步区里拥有它们。 run块中只有run可用,因为它是一项服务,scroll view块中只提供服务。