0

我需要調用從runblock一些控制器內部的角度範圍功能。我可以調用函數,否則需要使用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']; 
+0

的'run'塊只有$ rootScope。它沒有自己的範圍。 。 – georgeawg

+0

$ rootScope $應用可用,以及所有的$ rootScope.Scope方法:$手錶,$ EVAL,$上$廣播等欲瞭解更多信息,請參見[AngularJS $ rootScope.Scope API參考(HTTPS: //docs.angularjs.org/api/ng/type/$rootScope.Scope) – georgeawg

回答

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

你不能有$scope對象這裏作爲第三個參數,因爲無論$scope$controller對象在compiling and linking phase期間創建,其中run階段,其中run塊被執行。所以你不能讓你的跑步塊。只有$rootScoperun塊可用,因爲它是一個服務,只有服務在run塊可用。

+0

因爲我有調用函數時,按一下按鈕,有些場景我在運行程序段使用,所以打算重用的代碼。在這種情況下,我可以使用Rootcope或其他方式重複使用。 –

+0

這是不正確的。所有服務都可用,$ http,$ timeout,$ q等。$ scope不可用,因爲它不是服務。 – georgeawg

+1

@georgeawg,當然所有的服務都可以使用,但我沒有正確使用它。我編輯 –

相關問題