启动状态加载和控制器时的广播事件

时间:2015-07-22 16:34:21

标签: angularjs angular-ui-router

当状态完全加载并启动控制器时,我需要广播一个事件。我使用的是AngularJS v1.3.15和ui-router v0.2.11。

我尝试使用$stateChangeSuccess事件,但控制器并没有抓住广播事件,因为在广播事件时它没有被发现。

在我的模块run方法中,我有:

$rootScope.$on('$stateChangeSuccess', function (event) {
    $rootScope.$broadcast('someEvent');
});

我的控制器有以下内容:

$scope.$on('someEvent', function () {
    $scope.getList();
});

我尝试使用$viewContentLoading$viewContentLoaded,但由于我有嵌套的控制器/视图,因此会多次触发,因此$scope.getList()会多次运行。

解决这个问题的方法是什么?

2 个答案:

答案 0 :(得分:0)

在您的情况下,不需要放置stateChange侦听器。 angular ui-router为您的用例提供了一个功能:在状态更改时解析控制器,请参阅ui-router on github。 此外,您应该使用返回承诺的服务,因为您的api调用是异步的,然后将服务注入控制器。请参阅"解决"在同一页面上回答您需求的部分。

答案 1 :(得分:0)

我通过捕获someEvent错误并调用$scope.getList()方法解决了这个问题,但在启动控制器时调用$scope.getList()方法(位于控制器的底部)。 / p>

相关问题