1
Angular UI Bootstrap在1.13.0之後的某個版本中改變了datepicker期望的方式,即ng-model
。給它一個ISO日期字符串是好的,現在它想要一個Date
對象。AngularJS:創建用於將字符串轉換爲動態日期的指令
我消費從我的API ISO日期字符串了,所以我必須
- 它們轉換成
Date
對象給它的日期選擇器之前和 - 將它們存儲在其轉換回ISO日期字符串。
在過去,我用這樣的指令:
function DateObjectDirective() {
const directive = {
restrict: "A",
require: ["ngModel"],
link(scope, element, attributes, controllers) {
const ngModel = controllers[0];
ngModel.$formatters.unshift(value => {
let output = null;
if(value) {
output = moment(value).toDate();
}
return output;
});
ngModel.$parsers.unshift(value => {
let output = null;
if(value) {
output = moment(value).format();
}
return output;
});
},
};
return directive;
}
此不再工作,雖然,如下面的錯誤報告:
this.activeDate.getFullYear不是功能
我的猜測是,日期選擇器仍然使用字符串作爲參考。在將數據提交給日期選擇器之前,是否有其他方式可以轉換?
我認爲,如果你命名你的指令uibDatepickerPopup你甚至不會需要定義指令(宇日期 - 對象)在元素上。 –
@RobJ'uibDatepickerPopup'已經由AngularUI Bootstrap定義。另外我更喜歡能夠在需要時使用它,而不是所有時間。 – stschindler
Angular允許您通過使用相同的名稱併爲執行順序設置優先級來擴展指令。 –