Angularjs onchange 日期时间选择器不工作

Angularjs onchange datetime picker not working

首先我想说我已经阅读了很多修复程序,但是没有人解决我的问题。

我正在使用这个库,https://github.com/amittkSharma/extended-datetimepicker,我需要在我的输入更新后调用一个函数。

可以在 link、https://rawgit.com/amittkSharma/extended-datetimepicker/master/index.html 中找到如何使用时钟的示例,这基本上就是我使用时钟的方式,将它们附加到 ng-model。

这个库使用了一个指令,打开一个时钟来选择时间或者日期,我在时间部分使用它,我非常喜欢这个时钟,所以我正在使用它。但是我找不到一种方法来捕获我输入的 onchange 事件。

在指令代码中,第 134 行有此注释,//@TODO 自定义事件触发输入,我想我可能会在那里添加一些东西,我尝试添加一个 element.on('change') 函数,但我没有让它工作,所以我没有想法。

我使用这个库加载了很多次,使挑选时间更容易。所以我需要一个像在 ng-repeat 中一样工作的解决方案,或者我可以迭代的东西。

非常感谢任何帮助。

编辑

在 samura 给出答案后,我进一步调查了为什么它对我的 $scope 变量不起作用。

我没有提到这个,但我的 $scope 变量是一个数组,这就是问题所在(这就是为什么你在提问时需要尽可能详细).您需要添加第三个参数来监视数组内部的变化,您需要添加 true.

像这样:

$scope.$watch('timesArray', function() {
    alert('hey, time has changed!');
}, true); //here the 3rd param

取自:How to deep watch an array in angularjs?

对于这个输入

<input mdc-datetime-picker date="false" time="true" type="text" id="time" short-time="true"
           placeholder="Time"
           min-date="minDate"
           format="hh:mm a"
           ng-model="time">

您可以使用

$scope.$watch('time', function() {
    alert('hey, time has changed!');
});

在您的 controller 中捕捉 time 属性 上的任何变化。