$ state.go完成后调用一些函数

时间:2015-06-17 07:37:26

标签: javascript angularjs

转换后是否可以调用某些功能?我的意思是加载部分后。我尝试了诺言,但是在过渡开始之后就调用了它。

$state.go('app.one.two').then(function(d){
    // do staff
});

谢谢!

4 个答案:

答案 0 :(得分:4)

你可以听$ state events

  // Check if a state change happened
  $scope.$on('$stateChangeSuccess',
    function onStateSuccess(event, toState, toParams, fromState) {
      //stuff
    }
  );

答案 1 :(得分:4)

您需要查找stateChangeSuccess事件。每个stateChangeSuccess都会触发此事件,因此,您必须检查您的状态,以便执行某些特定于州的工作。

$rootScope.$on('$stateChangeSuccess', function(event, toState, toParams, fromState, fromParams) { 
    if(toState.name == 'app.one.two') {
       //Do something
    }
})

答案 2 :(得分:0)

ui-router中,您可以定义onEnteronExit回调,这可能会对您有所帮助。

答案 3 :(得分:0)

$state.go返回promise,所以你必须在重定向状态之后传递一些元素然后你可以添加回调函数

$state.go('app.one.two', {null:null}).then(function(d){
    // add functionality
});

这里我使用重定向状态传递null值,如果你必须将任何id或某些数据传递给下一页,那么你可以传入{}作为对象