不,link
函數不是trigger
更改事件。改變事件是由這個代碼觸發:
$datepicker = $(element).datepicker({
format: "dd/mm/yyyy",
startDate: 'today',
language: 'pt-BR',
autoclose: true,
todayHighlight: true,
forceParse: false
});
$datepicker.datepicker('setDate', date);
這實際上改變了模型$scope.date
,這就是爲什麼ng-change
被稱爲!
將回答這個問題:
的另一點是:讓我們來看看該插件改變輸入。 這是一個編程式更改,ng-change指令不會 監聽這些程序化更改,對吧?
換句話說:
基本上你是鏈接 事件中改變輸入的格式。
,你可以告訴你的edit()
功能,當真正的變化發生,或者你可以簡單地做一個簡單的watch
和不使用ngChange
指令的解決方法。
$scope.$watch('date', function(newValue, oldValue) {
if(newValue!=oldValue&&newValue!='25/12/2018'){
console.log(newValue);
console.log(oldValue);
$scope.changed = true;
}
});
https://plnkr.co/edit/Yq32mq7fm7niy6eXhrDL?p=preview
在我看來,如果可能。 我不會在項目中使用任何jQuery。
您應該使用角UI的日期選擇器https://angular-ui.github.io/bootstrap/#/datepicker
關於角與jQuery的reference:
DOM操作停止試圖使用jQuery修改DOM中 控制器。真。這包括添加元素,刪除元素,檢索其內容,顯示和隱藏它們。使用內置的 指令,或者在必要時編寫自己的指令,以完成DOM 的操作。請參閱下面的重複功能。
如果您正在努力打破習慣,可以考慮從您的應用程序中刪除jQuery 。真。 Angular擁有$ http服務和強大的 指令,這些指令幾乎總是不必要的。 Angular捆綁銷售 jQLite具有極少數最常用於編寫 Angular指令的功能,特別是與事件綁定。
好的!我想知道如何使用'watch'而不是'ng-change',但我會有很多手錶(我有一個項目列表,每個項目都有一個日期屬性),這可能會讓我的UI變慢。 –
@VictorLeal不使用'watch'。我只建議你'看'作爲**解決方法**。我的主要答案是停止使用** jQuery **並在你的項目中導入https://angular-ui.github.io/bootstrap/#/datepicker,所以不需要像你這樣配置'datepicker' 。 –
我正在做一些測試! –