Angular:如何在状态更改时调用scope方法
Angular: how do I call a scope method on state change?
stateChangeSuccess
等的角度UI路由器事件在rootScope
级别激发,因此与这些事件相关的代码大多位于RootCtrl
中
我有两个州,分别是HomeCtrl
和AboutCtrl
在stateChange
到'about'
上,我想调用AboutCtrl
中的一个方法。。。我怎样才能做到这一点?
注意:我可以调用$scope.RootCtrlMethod
,因为stateChangeSuccess
代码是用RootCtrl
编写的,但不能对AboutCtrl
执行同样的操作。
示例:RootCtrl
:
function($rootScope, $scope){
$scope.someFun = function(){
console.log("called");
}
$rootScope.$on('routeChangeSuccess', function(event, toState, fromState,...){
if(toState.name == '/'){
$scope.someFun();
}
}
}
这里的一个技巧是将该事件完全挂接到$scope
上,而不是挂接到*$rootScope*
:上
//$rootScope.$on('routeChangeSuccess',
$scope.$on('routeChangeSuccess',
function(event, toState, fromState,...){
if(toState.name == '/'){
$scope.someFun();
}
}
现在我们可以访问在$scope上定义的任何方法。
但是,在这种情况下,我们需要确定,我们将清除的钩子
var removeMe = $scope.$on('routeChangeSuccess', ...
$scope.$on("$destroy", removeMe);
因此,一旦我们的$scope被破坏,我们就不会产生内存泄漏。
相关文章:
- Angular:如何在状态更改时调用scope方法
- Angularjs从纯JS函数调用$scope.function
- Angular js - 异步调用 $scope.users 后不更新模态值
- 仅在focusout字段之后调用$scope.watch函数
- 如何调用$scope$apply()仅当它's还没有进行中
- 无法在茉莉花测试中调用$scope.form.$submitted:未定义
- 无法调用$scope上定义的函数
- 从 AngularJS 中$scope上定义的另一个函数调用$scope上定义的函数
- 无法调用 $scope.submit 函数
- AngularJs Jasmine 无法在方法$rootScope中调用$scope方法
- 自定义指令调用$scope函数会导致$rootScope:infdig
- 调用$scope时发生Angularjs错误$apply()
- 如何从$scope.function2调用$scope.function 1
- 在jasmine中调用$scope方法
- 无法在ng-repeat中调用$scope函数
- 如何从包含控制器的指令中调用$scope方法
- Angular UI Router 1.0——为什么在不离开state的情况下调用$scope.$watch('
- 如何从angularjs指令中调用$scope函数
- 如果不调用 $scope.$apply,则对 $scope 属性的 AngularJS 更改不会反映在视图中
- 我如何调用$scope变量内部函数在Ionic不同的模板