javascript - 如何检测 angularJS 中的引导日期时间选择器更改事件

标签 javascript angularjs

我正在以 Angular 使用这个日期时间选择器。

https://eonasdan.github.io/bootstrap-datetimepicker/

在我的 Controller 内部:

$('#picker').datetimepicker();

在我的 HTML 中我有:

    <div id="#picker" >
        <input type='text' style="font-size:10pt;" class="rptv-input" placeholder="Start Time" ng-model='adate' ng-change="datechange()" />
        <span class="input-group-addon">
            <span class="glyphicon glyphicon-calendar"></span>
        </span>
    </div>       

一切都由 Controller “AppController”管理。 问题是,当我通过单击在日历上选择一个日期时,它不会触发任何“更改”事件(换句话说,不会触发 datechange)。如果我在 ng-model“adate”上做 watch ,它似乎也不会触发它。如果我在文本框中键入内容,则范围变量会发生变化。

如果用户单击选择器中的日期进行更改,我如何检测文本框上的更改?

最佳答案

这是逻辑的要点,但基本上您需要制定一个指令,该指令又会创建日期时间选择器本身。然后在 boostraps change() 函数中,您必须执行 $apply() 触发摘要循环并更新您的模型。

boostrap 3 datetimepicker event documentation

angular.module('yourApp')
.directive('datetimepicker', function () {
    return {
        restrict: 'A',
        require : 'ngModel',
        link : function (scope, element, attrs, ngModelCtrl) {

            element.datetimepicker({
                change:function (date) {

                    // Triggers a digest to update your model
                    scope.$apply(function () {
                        ngModelCtrl.$setViewValue(date);
                    });

                }
            });
        }
    } 
});

用法:

<input datetimepicker ng-model="adate" />

关于javascript - 如何检测 angularJS 中的引导日期时间选择器更改事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30357364/

相关文章:

javascript - 单击两个嵌套的 <li>

javascript - 在 Chart.js 和 Angular.js 中使用 JSON

unit-testing - 在 Jasmine 测试中模拟 angular.element

javascript - 更改位置哈希后返回到以前的 url

javascript - Html & JS 在点击时将图像旋转 90 度

javascript - 如何使用 JavaScript 对两个变量进行加、减或乘?

javascript - 在 AngularJS 模板中增加一个变量

angularjs - 头部中的 Angular 动态元标记

javascript - ng-repeat 最终回调事件

javascript requestAnimationFrame 最终位置永远不准确