fragaria / angular-daterangepicker

Angular.js wrapper for dangrossman/bootstrap-daterangepicker
MIT License
519 stars 372 forks source link

when async set date can't redraw picker panel #298

Closed ryansix closed 5 years ago

ryansix commented 5 years ago

as following codes: html:

<input date-range-picker name="daterange6" id="daterange6" class="form-control date-picker" type="text" ng-model="vm.myDate.singleDate" options="{singleDatePicker: true,locale: {format: 'YYYY-MM-DD'}}" />

js: ` var vm = this; vm.myDate={singleDate:moment().subtract(3, "days")}; // init myDate singleDate

$timeout(function () {  
     vm.myDate.singleDate = moment().subtract(20, "days") ; //async set a value can't render picker panel
   }, 1000);

`

i can see the input value has render,but the picker still style in "moment().subtract(3, "days")" value,some case we'll request data from resource server async.

ryansix commented 5 years ago

now i have solve my problem myself , just add two line codes `

     modelCtrl.$render = function() {
      if (modelCtrl.$modelValue && modelCtrl.$modelValue.startDate) {
        _setStartDate(modelCtrl.$modelValue.startDate);
        _setEndDate(modelCtrl.$modelValue.endDate);
      } else {
        /* fix bug can't render picker panel when changed ng-model async  */
        if(modelCtrl.$viewValue && modelCtrl.$viewValue!=el.val())
          _picker.setStartDate(modelCtrl.$modelValue);
        _clear();
      }
      return el.val(modelCtrl.$viewValue);
    };

` in 105 line