我有兩個控制器。我在父控制器中定義了一個$ rootScope變量,並根據點擊的下拉菜單進行更改。
我希望更改反映在子控制器中。
父控制器
$rootScope.variable = {'attr1':true, 'attr2':false, 'attr3':false}//initializing
vm.clickedDropDown = function(index) {
$rootScope.variable = {'attr1':false, 'attr2':false, 'attr3':false }
switch (index) {
case 1:
$rootScope.variable={'attr1':true, 'attr2':false, 'attr3':false}
break;
case 2:
$rootScope.variable={'attr1':false, 'attr2':true, 'attr3':false}
break;
case 3:
$rootScope.variable={'attr1':false, 'attr2':false, 'attr3':true}
break;
}
}
兒童控制器
$rootScope.$watch($rootScope.variable,function(){
console.log($rootScope.variable);
console.log("changed");
},true)
變量發生變化,我能夠看到作爲輸出變量的變化。
我會用從父'$ broadcast'到子控制器。這種方法並不昂貴,因爲廣播只發生一次。無論如何,它不是很好的習慣問候你的例子。 –
'$ rootScope.watch('variable',...)''? – ccjmne
由於變量未定義而拋出錯誤 –