Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript eonasdan日期时间选择器,在页面加载时触发的更改事件_Javascript_Angularjs - Fatal编程技术网

Javascript eonasdan日期时间选择器,在页面加载时触发的更改事件

Javascript eonasdan日期时间选择器,在页面加载时触发的更改事件,javascript,angularjs,Javascript,Angularjs,我试图将ng change添加到运行datetimepicker的输入中,但它会在页面加载时触发change函数。下面是代码 <input datetimepicker ng-model="startDate" ng-change="testFunction()" options="cOptions" placeholder="Select Date"/> 您好,您使用指令的输入字段中的更改是由插件触发的,它显式地将其设置为null。

我试图将ng change添加到运行datetimepicker的输入中,但它会在页面加载时触发change函数。下面是代码

<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>