我在一個父控制器中對三個不同的指令,並試圖向一個事件向孩子們(指令的控制器)進行廣播。
我在父控制器中嘗試了以下操作,但無效。
$scope.$on('tracking', function(e, data){
//set it to open by default since that is the default case.
if($scope.switchBackToOpen === undefined) {
$scope.switchBackToOpen = true;
}
$scope.switchBackToOpen = data;
$scope.$broadcast('switch back', $scope.switchBackToOpen);
});
因爲這沒有工作,我沒有在我的指令的控制器下面,而不是傾聽上面的廣播:
vm.func = function(){
if($scope.$parent.switchBackToOpen) {
//communicate with a sibling directive
$scope.$root.$broadcast('set status back to open');
}
};
如果$broadcast
是不可能的$on
什麼是最裏面角度的方式來解決這個問題?
編輯父母/子女關係的更多的結構:
當一個div被點擊一個嵌套的指令,我想起來傳達給父控制器來捕捉這是否是「打開」頁面或不通過父控制器內的變量。然後,我想從這個父控制器發送變量,讓所有嵌套的指令都可以訪問它(我的第二塊代碼是我想要訪問父控制器變量的指令)。
這看起來像是在範圍數據模型中使用原語而不是使用對象的最佳做法的醜陋竅門。顯示更多家長/孩子的結構。指令是否使用隔離範圍? – charlietfl
您可以使用服務或工廠在您的控制器和指令之間進行通信 – Ronnie
謝謝@charlietfl我已更新以獲取更多詳細信息。基本上尋找一種不必使用$ parent的方法,如果可能的話,通過事件來完成。 – devdropper87