如何对控制器中angularjs中的服务中的数据更改做出反应

时间:2015-05-28 15:01:34

标签: javascript angularjs service

我希望能够在两个控制器之间共享数据,以便我可以从第一个控制器向服务发送一个布尔值,该控制器将触发第二个控制器的更改。

这是服务的样子

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

}

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

我一直在寻找一段时间,但无法找到解决方案。也许我只是愚蠢。

1 个答案:

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