使一个控制器依赖于另一个控制器的范围

时间:2015-07-24 07:37:34

标签: javascript angularjs

我有两个控制器:OperationController和DateController。在OperationController中,我有$ scope,包含" operations"阵列。我可以从我的应用程序更改此操作(删除,更新,添加...)。

我有第二个控制器,可以计算日期和天数。值。这个DateController需要从OperationController获取数据,然后它将计算days-data。它需要在每次操作更新时计算它。

如何绑定这两个控制器,因此DateController可以在第一次启动和每次数据更新时从OperationController获取数据?

2 个答案:

答案 0 :(得分:2)

使用工厂/服务存储operations数组,只要OperationController控制器中的值更改,就会更新值

myApp.factory('myService', [function() {
        var operations = {};
        return {
            getOperations: function() {
                return operations
            },

            setOperations: function(op) {
                operations = op;
            },
        }
    }])
    .controller('OperationController', [function($scope, myService) {
        $scope.operations = {};
        $scope.$watch(function() {
            return $scope.operations;
        }, function() {
            myService.setOperations($scope.operations);
        });
    }])
    .controller('DateController', [function($scope, myService) {
        $scope.operations = myService.getOperations();
    }]);

答案 1 :(得分:1)

有几种方法可以做到这一点,但推荐的方法可能是使用service来存储operations相关逻辑,并在两个控制器中声明对该服务的依赖性