javascript - 将 daterangepicker 转换为 Angular 指令

标签 javascript jquery angularjs angularjs-directive daterangepicker

我正在尝试将 daterangepicker 插件包装到 Angular Directive(指令)中。尽管我设法通过在回调函数中提醒所选日期来使其工作,但我似乎无法将所选日期保存到 $scope 或更新 ng-model。我添加了一条注释“//CALLBACK of daterangepicker”,以便看到此内容的任何人都可以在下面的代码中轻松找到它。我希望有更多经验的人能够阐明如何实现这一目标。

HTML(调用指令):

<input id="date-range-picker" class="form-control" type="text" 

ng-model="date"时间记录器-日期范围-选择器/>

Angular Directive(指令):

module.directive('timeRecorderDateRangePicker', function() {
    return {
        restrict: 'A',
        require: 'ngModel',
        link: function(scope, element, attrs, ngModelCtrl) {
            element.daterangepicker({
                startDate: moment.utc().subtract(7, 'days'),
                endDate: moment.utc(),
                minDate: '01/01/2014',
                maxDate: moment.utc(),
                dateLimit: {
                    days: 365
                },
                showDropdowns: false,
                showWeekNumbers: true,
                timePicker: false,
                ranges: {
                    'Today': [moment.utc(), moment.utc()],
                    'Yesterday': [moment.utc().subtract(1, 'days'), moment.utc().subtract(1, 'days')],
                    'Last 7 Days': [moment.utc().subtract(6, 'days'), moment.utc()],
                    'Last 30 Days': [moment.utc().subtract(29, 'days'), moment.utc()],
                    'This Month': [moment.utc().startOf('month'), moment.utc().endOf('month')],
                    'Last Month': [moment.utc().subtract(1, 'month').startOf('month'), moment.utc().subtract(1, 'month').endOf('month')]
                },
                opens: 'right',
                format: 'MMMM D, YYYY',
                separator: ' to ',
                buttonClasses: ['btn btn-default'],
                locale: {
                    applyLabel: 'Apply',
                    cancelLabel: 'Cancel',
                    fromLabel: 'From',
                    toLabel: 'To',
                    customRangeLabel: 'Custom',
                    daysOfWeek: ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'],
                    monthNames: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'],
                    firstDay: 1
                }
            }, function(start, end, label) {
                // CALLBACK of daterangepicker
                alert('Callback!!!');
            }).prev().on('click', function() { // makes calendar icon click work
                $(this).next().focus();
            });
        }
    };
});

最佳答案

您可以使用dangrossman's bootstrap-daterangepicker在使用 jqlite 的 Angularjs 项目中,试试这个

在 HTML 中

<input type="text" id="daterange" />

然后将选择器附加到您想要使用 jqlite 触发它的元素

 angular.element('#daterange').daterangepicker({
        timePicker: true,
        timePickerIncrement: 30,
        locale: {
            format: 'MM/DD/YYYY h:mm A'
        }
    });

您还可以使用事件

    angular.element('#daterange').on('apply.daterangepicker', function(ev, picker) {
      //do something, like calling a function
      $scope.doSomething(picker.startDate, picker.endDate);
    });

关于javascript - 将 daterangepicker 转换为 Angular 指令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28745357/

相关文章:

javascript - 使用 jQuery 获取特定 div 中特定元素的值

javascript - Node.js 中出现 Promise 错误

javascript - window.open(url) 不在同一选项卡中打开新网页

javascript - Angular JS ng-if 在链接上

javascript - 在 X 个结果后包装数据的 CSS 元素

javascript - AngularJS - 获取标题作为响应

javascript - 为什么我的 angularJS 错误在 Firefox 控制台和 Firebug 中显示如下?

JavaScript 虚拟宠物

javascript - 用于识别 JavaScript 中 URL 部分的正则表达式

jquery - 有没有办法隐藏滚动元素并在用户停止滚动时显示?