How to catch the bootstrap datepicker change event?

后端 未结 4 706
野性不改
野性不改 2021-02-07 04:58

Now I am trying to do something after user change the date. But seems like my ng-change is ignored.

Here is my code sample:

 

        
相关标签:
4条回答
  • 2021-02-07 05:16

    You could keep an eye on when the $scope changed.

    Something like this:

    $scope.startdate;
    
    $scope.$watch("startdate", function(newValue, oldValue) {
        console.log("I've changed : ", startdate);
    });
    
    0 讨论(0)
  • 2021-02-07 05:23

    The way I've done this before is to wrap the datepicker jQuery stuff in an angular directive. This is rough but here's the idea:

    app.directive('dateDirective', function() {
        return {
            restrict: 'A',
            scope: {
                onChange: '&'
            },
            link: function(scope, element, attrs) {
              element.datetimepicker({
                format: "MM-yyyy"
                //all your options here
              }).on('changeDate', function(e) {
                scope.$apply(function(scope) {
                  scope.onChange(e.date);
                });
              });
            }
        };
    });
    

    You can capture the change event from the jQuery element and use it to call a function in your controller, or just use it to set scope values or whatever:

    var app = angular.module('myApp', []);
    
    app.controller('myAppCtrl', function($scope) {
      $scope.current = '';
      $scope.changedate = function(date){
        $scope.current = date;
      };
    });
    

    Then you just need to add the directive to your dom element:

    <input date-directive
                       type="text" 
                       starting-day="2" 
                       show-button-bar="false" 
                       show-weeks="false" 
                       class="form-control addTicketDateInput" 
                       datepicker-popup="dd MMM" 
                       ng-model="startdate" 
                       is-open="openstart"                         
                       datepicker-options="dateOptions"           
                       ng-required="true"
                       close-text="Close" />
    

    Then tell it which scope function to call:

    <input date-directive onChange='changedate(date)'
                       type="text" 
                       starting-day="2" 
                       show-button-bar="false" 
                       show-weeks="false" 
                       class="form-control addTicketDateInput" 
                       datepicker-popup="dd MMM" 
                       ng-model="startdate" 
                       is-open="openstart"                         
                       datepicker-options="dateOptions"           
                       ng-required="true"
                       close-text="Close" />
    

    Like I said this is rough just recalled it quickly. If this doesn't help I'll dig out a sample that is tested.

    Hope that helps!

    also, there's a datepicker directive here that might be halpful:

    https://angular-ui.github.io/bootstrap/

    0 讨论(0)
  • 2021-02-07 05:24

    Simple solution: Try passing the value:

    HTML

    ng-change="selectDate(dt)"
    

    JavaScript

    $scope.selectDate = function(dt) {
      console.log(dt);
    }
    
    0 讨论(0)
  • 2021-02-07 05:32

    Simple Solution In Angular

    (bsValueChange)="Function($event)"
    
    0 讨论(0)
提交回复
热议问题