Javascript eonasdan日期时间选择器,在页面加载时触发的更改事件
我试图将ng change添加到运行datetimepicker的输入中,但它会在页面加载时触发change函数。下面是代码Javascript eonasdan日期时间选择器,在页面加载时触发的更改事件,javascript,angularjs,Javascript,Angularjs,我试图将ng change添加到运行datetimepicker的输入中,但它会在页面加载时触发change函数。下面是代码 <input datetimepicker ng-model="startDate" ng-change="testFunction()" options="cOptions" placeholder="Select Date"/> 您好,您使用指令的输入字段中的更改是由插件触发的,它显式地将其设置为null。
<input datetimepicker ng-model="startDate"
ng-change="testFunction()"
options="cOptions"
placeholder="Select Date"/>
您好,您使用指令的输入字段中的更改是由插件触发的,它显式地将其设置为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更改将不会触发,直到您在字段中插入内容。所以onload不会被触发。
另一种方法是,如果值为null或不为null,则可以检入该函数,而不是将此范围变量与其ng change函数进行AND。如果它是非空的,那么只运行写在ng change上的实现
以下是plunker,显示了两种情况:
更新:如果您正在编辑加载时的值,但仍然不想执行在ng change上编写的实现,那么请使用单独的变量,在第一次ng change上切换其值,由于指令的原因,这会自动触发,下一次更改之后,您的ng change函数将运行。
是否在控制器加载时设置其值?您在该输入字段中看到的初始值是多少?@Shantanu我从加载页上的DB中获取值尝试向其添加
ng if=“startDate”
,只有当您从数据库中获得数据时,才将值保存到$scope.startDate
server@AlonEitan事实并非如此work@user1751287所以您是说您没有类似于“$scope.startDate=new Date();”的内容在loadData()
之外的任何地方,并且您还向视图中的元素添加了ng if=“startDate”
,但它仍然会触发它?我看不到您在loadData页上填写了日期。很抱歉,前面的评论。我的意思是控制器中的ng change=“testfunction()”具有变量vm.isFirstLoad=true;并且在testFunction中有if条件,比如if(!vm.isFirstLoad){..},然后在它之后使vm.isFirstLoad=false;它也应该起作用
<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>