2015-09-09 2 views
0

У меня есть функция editPrcChallenge, где я направляю пользователя в состояние ребенка и вещание challengekey, Broadcast вызывает, но не входит в функцию, Любая идея, что я внедрил неправильно?Как использовать трансляцию AngularJS между различными состояниями?

До сих пор пытался код ....

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; 
     }); 
}; 
+0

Состояние штата «app.editChallenge», состояние ребенка? И если да, пытаетесь ли вы транслировать событие из родительского представления, а THEN переходите к дочернему виду, кто, как вы ожидаете, должен обработать трансляцию события? – GPicazo

+0

Вы сразу же переходите к состояниям после трансляции события. Если ребенок находился в DOM, я думаю, что его $ scope уничтожен до того, как будет запущен прослушиватель событий. Если ребенок входит в дом из-за изменения состояния, возможно, это может быть тот ребенок еще не находится в DOM. Изменение состояний сразу после этого вещания немного сложно рассуждать. – m59

ответ

0

Спасибо за глядя на мой вопрос я получил ПОСТАНОВЛЯЕТСЯ и обновил свой вопрос , в основном мне нужно было добавить challengeKey, поскольку $ stateParams теперь трансляция работает и получает вызовKey в области child $.

$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; 
       });