Bootstrap datepicker与ng-blur angular js无法正常工作

时间:2015-09-08 05:59:39

标签: javascript angularjs twitter-bootstrap twitter-bootstrap-3 bootstrap-datepicker

我正在使用bootstrap datepicker。我有两个相同形式的日期。

有两个问题/问题。

  1. 我使用ng-blur来选择日期,以及在角度js控制器中做些什么操作。我不想使用ng-change。我想在选择完整日期时执行一些操作。
  2. 我已经为datepicker创建了指令,

    directive('myDatepicker', function (gettextCatalog) {
        "use strict";
        return {
            'restrict' : 'A',
            'require' : 'ngModel',
            'link' : function (scope, element, attrs, ctrl) {
                element.datepicker({
                    'format' : 'yyyy-mm-dd',
                    'language' : gettextCatalog.currentLanguage,
                    'autoclose' : true,
                    'clearBtn' : false,
                    'todayBtn' : 'linked',
                    'todayHighlight' : true
                }).on('show', function (e) {
                    element.datepicker('update', ctrl.$viewValue);
                }).on('changeDate',
                        function (e) {
                        ctrl.$setViewValue(moment(e.date).format('YYYY-MM-DD'));                        
                        console.log("in directive = " + moment(e.date).format('YYYY-MM-DD'));
                    }).on(
                    'changeMonth',
                    function (e) {
                        ctrl.$setViewValue(moment(e.date)
                                .format('YYYY-MM-DD'));
                    }
                ).on(
                    'changeYear',
                    function (e) {
                        ctrl.$setViewValue(moment(e.date)
                                .format('YYYY-MM-DD'));
                    }
                );
            }
        };
    });
    

    控制器看起来像,

    angular.module('my.controllers')
    .controller('dateOprnController', function($scope) {
        $scope.doOperationOnToDate = function() {
            console.log("in controller = " + $scope.toDate);
        };
    });
    

    我的日期选择器看起来像

    <div class="right-inner-addon">
        <i class="glyphicon glyphicon-calendar"></i>
        <input type="text" id="fromDate" class="form-control  datepicker" ng-model="fromDate" ng-blur="doOperationStartDate()" my-datepicker>
    </div>
    <div class="right-inner-addon">
        <i class="glyphicon glyphicon-calendar"></i>
        <input type="text" id="toDate" class="form-control  datepicker" ng-model="toDate" ng-blur="doOperationOnToDate()" my-datepicker>
    </div>
    

    考虑toDate,如果我选择toDate,它会在控制台中显示以下输出。

      

    //我选择date = 2015-09-08

         

    in controller = undefined

         

    in directive = 2015-09-08

         

    //我选择date = 2015-09-09

         

    in controller = 2015-09-08

         

    in directive = 2015-09-09

    在控制器中,它提供先前选择的日期,但在指令中给出正确的日期。

    如何在选择时在控制器中获得正确的日期?

    1. 如何在fromDate中选择日期之前禁用toDate中的日期?

0 个答案:

没有答案