为了账号安全,请及时绑定邮箱和手机立即绑定

AngularJS版jquery datepicker有一小点问题

AngularJS版jquery datepicker有一小点问题

拉莫斯之舞 2019-04-08 11:19:19
https://github.com/angular-ui/ui-date在项目中,我使用了适合angular的datepicker,现在有一个问题解决不了。开始时间:结束时间:搜索Angular:.....controller('someCtrl',function(...)){$scope.startDateOptions={changeYear:true,changeMonth:true,onClose:function(selectedDate){varend=$('#end');vard=$('#start').datepicker("getDate");end.datepicker("setDate",newDate(d.getFullYear(),d.getMonth(),d.getDate()+1));end.datepicker("option","minDate",selectedDate);$scope.enddate=parseInt($scope.startdate)+24*60*60*1000;}};$scope.endDateOptions={changeYear:true,changeMonth:true,onClose:function(selectedDate){varstart=$("#start");if(start.val()==''){vard=$('#end').datepicker("getDate");start.datepicker("setDate",newDate(d.getFullYear(),d.getMonth(),d.getDate()-1));$scope.startdate=parseInt($scope.enddate)-24*60*60*1000;}start.datepicker("option","maxDate",selectedDate);}};}现在就是点击第一个,然后第二个input会自动填上到第二天的时间,点击搜索完,第二个Input不会显示日期。因为第二个是setDate上去的。如果是点击第一个input,再选择第二个input。它们都可以显示日期。现在不知道怎么解决。
查看完整描述

2 回答

?
慕容708150

TA贡献1831条经验 获得超4个赞

datepicker的onClose事件是纯粹的javascript事件,对angular来说是外部事件也就是说在onClose事件的处理函数中所做的任何状态更新(改变$scope或$scope的子对象的属性)都无法被angular记录下来。angular提供了$apply接口解决这个问题。因此$scope.enddate=parseInt($scope.startdate)+24*60*60*1000;
改为
scope.$apply(function(){
$scope.enddate=parseInt($scope.startdate)+24*60*60*1000;
});
formoredetails,plzgoolge$scopeangularapply
                            
查看完整回答
反对 回复 2019-04-08
?
眼眸繁星

TA贡献1873条经验 获得超9个赞

在AngularJS配合其他JS库使用时,最有可能出现问题的部分就是在使用第三方JS库的时候Angular并不知情。所以只要控制器中的某段代码没有使用Angular提供的函数或是服务,一定要在后面运行一遍
//代码
$scope.$apply();
当然更好的方法是将需要运行的代码放到$apply中的匿名函数中运行,像是这样:
$scope.$apply(function(){
//代码
})
这样的话可以让Angular捕获到其中的错误。
Enjoycoding!
                            
查看完整回答
反对 回复 2019-04-08
  • 2 回答
  • 0 关注
  • 355 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信