我希望能够在两个控制器之间共享数据,以便我可以从第一个控制器向服务发送一个布尔值,该控制器将触发第二个控制器的更改。
这是服务的样子
exports.service = function(){
// sets Accordion variable to false ;
var property = true;
return {
getProperty: function () {
return property;
},
setProperty: function(value) {
property = value;
}
};
};
现在是第一个控制器
exports.controller = function($ scope,CarDetailsService,AccordionService){
$scope.saveDetails = function() {
AccordionService.setProperty(false);
}
}
和第二个
exports.controller = function($scope, AccordionService ) {
$scope.isCollapsed = AccordionService.getProperty();
}
用例是当我点击第一个控制器上的按钮时,服务更新其中的数据,然后在第二个控制器上提供,从而触发第二个控制器的更改。
我一直在寻找一段时间,但无法找到解决方案。也许我只是愚蠢。
答案 0 :(得分:0)
在第二个控制器上,您可以在第一个控制器中观察您更改的变量:
scope.$watch('variable', function(newValue, oldValue) {
//React to the change
});
或者,您可以使用rootScope上的$broadcast:
在第一个控制器上:
$rootScope.$broadcast("NEW_EVENT", data);
在另一个控制器上:
scope.$on("NEW_EVENT", function(event, data){
//use the data
});