如何在ui.router中更改状态时正确刷新范围

时间:2014-09-01 17:29:15

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

我正在使用ui.router来管理我的应用上某些页面的状态。当我改变状态时,我希望控制器重新加载范围内的对象。但是,我没有找到一种方法来处理状态变化来做到这一点。

有没有办法可以挂钩状态转换并触发我的角度资源请求?

这是我的两个状态转换,它们位于不同的函数中。

$state.transitionTo('myObj.current', {myObjId: $scope.myObj.myObjId});

$state.transitionTo('myObj.current.edit', {myObjId: $scope.myObj.myObjId});

当状态改变时,我想调用_getMyObjDetails函数。

var   _getMyObjDetails = function (myObjId) {
      var _myObj = MyObjService.get({myObjId: myObjId});
      _myObj.$promise.then(function (data) {
        $scope.myObj = data;
        ngProgress.complete();
      });
      return _myObj;
    };

1 个答案:

答案 0 :(得分:1)

如果我理解正确,我认为你唯一需要做的就是听$ stateChangeStart事件。你可以将$ rootScope注入你的控制器并按如下方式进行:

$rootScope.$on('$stateChangeStart', function (event, next) { /* Your code... */ });

希望有所帮助。