Javascript 如何在不同的州之间使用AngularJS广播?

Javascript 如何在不同的州之间使用AngularJS广播?,javascript,angularjs,broadcast,Javascript,Angularjs,Broadcast,我有一个函数editPrcChallenge,我将用户路由到子状态并广播challengekey,广播正在调用,但它没有进入函数内部,知道我实现了什么错误吗 到目前为止,我试过代码 parent.js $scope.editPrcChallenge = function (challengeKey) { $scope.$broadcast('editPrcChallenge',challengeKey); $state.go('app.editChallenge',{proces

我有一个函数editPrcChallenge,我将用户路由到子状态并广播challengekey,广播正在调用,但它没有进入函数内部,知道我实现了什么错误吗

到目前为止,我试过代码

parent.js

$scope.editPrcChallenge = function (challengeKey) {
    $scope.$broadcast('editPrcChallenge',challengeKey);
    $state.go('app.editChallenge',{processId:$stateParams.processId,challengeKey:challengeKey});
};
child.js

$scope.$on('editPrcChallenge', function (s,challengeKey){
    console.log(challengeKey);
    $scope.editMode = true;
    // $scope.clearFields = clearForm();
    processFactory.getProcessChallengeInfo(challengeKey)
        .then(function(response){
            $scope.challengesDTO =response.data;
            $scope.showEscalation = !!$scope.challengesDTO.challengeDesLkupCode;
        });
};

感谢您调查我的问题,我解决了问题并更新了我的问题,基本上我需要添加challengeKey,因为$stateParams now broadcast正在工作,并将challengeKey添加到child$scope中

$scope.editPrcChallenge = function (challengeKey) {
       $scope.$broadcast('editPrcChallenge',challengeKey);
       $state.go('app.editChallenge',{processId:$stateParams.processId,challengeKey:challengeKey});
    };


 if($stateParams.challengeKey) {
        console.log($stateParams.challengeKey);
             $scope.editMode = true;
            // $scope.clearFields = clearForm();
             processFactory.getProcessChallengeInfo($stateParams.challengeKey).then(function(response){
                  $scope.challengesDTO =response.data;
                  $scope.showEscalation = !!$scope.challengesDTO.challengeDesLkupCode;
                });

状态“app.editChallenge”是子状态吗?如果是这样,您是否正在尝试从父视图广播事件,然后导航到子视图,您希望由谁来处理广播的事件?在广播事件后,您将立即转换状态。如果子对象在DOM中,我认为它的$scope会在触发事件侦听器之前被销毁。如果该子项由于状态更改而进入dom,则您可能认为该子项尚未进入dom。在广播结束后立即改变状态有点难以解释。