如何对控制器上 angularjs 中服务中数据的变化做出反应

How to react to change in data in a service in angularjs on a controller

我希望能够在两个控制器之间共享数据,这样我就可以从第一个控制器向服务发送一个布尔值,这会触发第二个控制器的变化。

这是服务的样子

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, CarDetailsS​​ervice, AccordionService) {

    $scope.saveDetails = function() {

            AccordionService.setProperty(false);

    }

}

和第二个

exports.controller = function($scope, AccordionService ) {

    $scope.isCollapsed = AccordionService.getProperty();

}

用例是当我点击第一个控制器上的按钮时,服务更新其中的数据,然后在第二个控制器上提供,从而触发第二个控制器中的更改。

我已经四处寻找了一段时间,但找不到解决方案。也许我只是愚蠢。

在第二个控制器上,您可以 $watch 在第一个控制器中更改的变量:

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