是否可以在角度daterangepicker中制作动态范围?

时间:2017-11-30 16:23:09

标签: javascript angularjs momentjs angular-daterangepicker

通常情况下:

vm.datePickerRangeOptions = {
  ranges: {
    'Today': [moment(), moment()]
  }
};

就足够了。这样我就定义了今天的开始和结束日期。一旦时间过去就会出现问题:当页面未刷新时,“今天”仍指向呈现页面的日期。

到目前为止,我尝试添加一些事件处理程序:

vm.datePickerRangeOptions = {
  ranges: {
    'Today': [moment(), moment()]
  },
  eventHandlers: {
    'show.daterangepicker': a
  },
};

function a() {
   vm.datePickerRangeOptions.ranges = {
     'Today': [moment(), moment()]
  };
}

但是一旦显示日期选择器,它立即关闭。

第二种方法是将vm.dateRangePickerOptions设置为函数,并在输入视图上设置为option。 JS:

vm.dateRangePickerOptions = function() {
  return {
    ranges: {
      'Today': [moment(), moment()]
    }
  }
}

和模板:

<input date-range-picker name="daterange" ng-model="vm.datePicker.date"
       options="vm.datePickerRangeOptions()">

在这种情况下,我收到了来自moment.js的错误:

  

TypeError:无法将undefined转换为object

1 个答案:

答案 0 :(得分:0)

Angular daterangepikcerbootstrap daterangepicker的封套,根据其创建者的说法,它是不可能的(问题:#1137#1516)。

要更新日期范围值,可以在某个时间间隔内设置它们。例如:

function updateRanges() {
  vm.datePickerRangeOptions.ranges = {
    'Today': [moment(), moment()],
  }

  var now = moment();
  var startOfTomorrow = moment().add(1, 'day').startOf('day');
  $timeout(updateRanges, startOfTomorrow.diff(now));
}

附注:如果您想更新日期范围并且已设置maxDate,请不要忘记在时间间隔内更新日期范围。