如何在外部模型更新上刷新md-datepicker

时间:2016-02-06 18:40:20

标签: angularjs datepicker angular-material

我有一个md-datepicker控件。我需要从外部更新模型值,但是当我这样做时,控件将不会反映更改。 但是,具有相同模型的第二个md-datepicker控件将传播更改。

我错过了什么?



angular.module('DatePick', ['ngMaterial']);

angular.module('DatePick').controller('Pick', function($scope) {
  $scope.date = new Date();
  $scope.nextDay = function() {
    $scope.date.setDate($scope.date.getDate() + 1);
  };
  $scope.prevDay = function() {
    $scope.date.setDate($scope.date.getDate() - 1);
  };
});

<body ng-app="DatePick">
  <div ng-controller="Pick">
    <md-datepicker ng-model="date"></md-datepicker>
    <md-datepicker ng-model="date"></md-datepicker>
    {{date}}
    <button ng-click="prevDay()">-</button>
    <button ng-click="nextDay()">+</button>
  </div>
</body>
&#13;
&#13;
&#13; 示例小提琴here

1 个答案:

答案 0 :(得分:1)

我得到了Material devs的帮助。见票7045。 简而言之,.setDate()不会更改对象,因此不会检测到日期更改。相反,需要创建一个新对象。以下是有效的。

$scope.nextDay = function() {
  $scope.date = new Date($scope.date.setDate($scope.date.getDate() + 1));
};
$scope.prevDay = function() {
  $scope.date = new Date($scope.date.setDate($scope.date.getDate() - 1));
};