当更新指令中的日期选择器时,让服务中的变量自动更新的 angular 方法是什么?

What is the angular way to have a variable in a service automatically update when a datepicker in a directive is updated?

我想使用日期选择器 select 一个日期,然后在服务中对其进行操作以生成更多日期。

我可以从服务中检索一个变量并将日期选择器值分配给它,但是我无法在更新日期选择器时更新服务中的值。最好的 angular 方法是什么?

Plnkr

app.service('calculationDataService', function () {
  this.firstDate = new Date();
});

app.directive('datePicker', function(){
    return {
        restrict: 'E',
        templateUrl: 'date-picker.html',
        controller: function($scope, calculationDataService){
            $scope.today = function() {
                $scope.dt = new Date();
            };
            calculationDataService.firstDate = $scope.dt;
            $scope.today();

            $scope.clear = function () {
                $scope.dt = null;
            };

                [...]

        },
        controllerAs: 'pickers'
    };

你必须在控制器中分配:

$scope.dataService = calculationDataService;

然后像

一样更新值
$scope.dataService.firstDate = $scope.dt;

编辑

反正我看到顺序不对。

您正在将服务的开始日期 属性 分配给未定义,因为分配后函数是 运行。

你应该 运行 $scope.today() 上面的一行

我需要 Santiago Rebella 的解决方案。但是,要在每次更新日期选择器后更新日期,我还需要 html 中的 ng-change 即 运行 $scope.dataService.firstDate = $scope.dt.