2016-05-03 4 views
0

私は$broadcastイベントを親コントローラから処理していますが、子コントローラにオブジェクトが来るのを見ていません。何が正しく実装されていないのか分かりません。

どのように私はangularJsイベントを使用してこのタスクを達成できますか?

parentCtrl.js

$scope.$broadcast('assessmentData',$scope.RiskAssessDTO); 

childCtrl.js

if ($stateParams.assessmentId) { 
    $scope.$on('assessmentData', function(s, assessmentData) { 
     var assessmentData = assessmentData; 
     console.log('assessmentData', assessmentData); 
    }); 
} 
+0

$scope.$on('scanner-started', function(event, args) { // do what you want to do }); 

https://docs.angularjs.org/api/ng/type/ $ rootScope.Scope#$を子ロードされていますブロードキャストしようとする前にif条件が真であるか? –

+0

はい、子が読み込まれ、条件が満たされている場合 – hussain

答えて

2

あなたは$ rootScopeを使用すべき放送$を使用したい場合。その後、

$scope.startScanner = function() { 

    $rootScope.$broadcast('scanner-started'); 
} 

および受信する、あなたのコントローラの$の範囲を使用します。

よろしく、

+1

これは必ずしも正しいとは限りません。そのレベルで登録されたハンドラを扱うためには、ルートスコープの横にある場合にのみ '$ rootScope'を使う必要があります。この場合、 '$ rootScope'からのブロードキャストは実際にはあなたのスコープがあなたがいると思うレベルにないところでは***スコープの問題をマスクするかもしれません。 –

関連する問題