eonasdan datetimepicker,在页面加载时触发的更改事件

时间:2017-07-14 16:42:00

标签: javascript angularjs

我正在尝试将ng-change添加到运行datetimepicker但在页面加载时触发更改功能的输入。下面是代码

<input datetimepicker ng-model="startDate" 
       ng-change="testFunction()" 
       options="cOptions" 
       placeholder="Select Date"/>

任何想法如何防止这种情况?

编辑:

$scope.testFunction = testFunction;
function testFunction(){
    console.log('on change')
}

loadData();

function loadData(){
  //this is where startDate is set
}

1 个答案:

答案 0 :(得分:0)

您正在使用该指令的输入字段的更改由插件触发,它显式将其设置为null。因此,您可以进行验证,直到填充的输入字段不执行您在ng-change函数上编写的逻辑。有两种方法可以做到这一点:

<div class="input-group">
    <input class="form-control" datetimepicker ng-model="vm.date" options="vm.options" 
    ng-change="vm.date && vm.changed()"/>
    <span class="input-group-addon"><span class="glyphicon glyphicon-calendar">
    </span></span>
</div>

现在,在您在字段中插入内容之前,ng-change不会触发。因此onload它不会被触发。 其他方法是使用ng-change函数来代替使用此范围变量,如果值为null,则可以检入该函数。如果它是非null,那么只运行写在ng-change上的实现。

这里的掠夺者显示了两个条件: http://plnkr.co/edit/uCf2vpmoYIYzxTjmFVcX?p=preview

更新:如果你正在编辑值onload但是你仍然不想执行你在ng-change上编写的实现,那么就有单独的变量,在第一次ng-change时切换它的值,由于指令而自动触发,next改变你的ng-change功能将会运行。 http://plnkr.co/edit/FogYzmDBd1gIolvjP7yl?p=preview