亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

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。它們都可以顯示日期?,F在不知道怎么解決。
查看完整描述

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 關注
  • 368 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號