Wir haben unsere Anwendung vor kurzem aktualisiert, um die neueste eckige Version von einer Version bis vor 1.3.0 bis 1.5.0 zu verwenden. Offenbar wir jetzt in eine unterbrechende Änderung in 1.3.0 eingeführt stoßen:angular 1.3.0 und eingang [type = string]
https://github.com/angular/angular.js/issues/9218
wir eine eigene Richtlinie hatte, die uns die pikaday Datumsauswahl aktiviert haben:
module.directive('pikaday', function() {
return {
require: 'ngModel',
link: function preLink(scope, element, attrs, controller) {
var $element = $(element),
momentFormat = 'DD/MM/YYYY',
year = new Date().getFullYear();
// init datepicker
var picker = new Pikaday(
{
field: document.getElementById(attrs.id),
firstDay: 1,
format: momentFormat,
minDate: new Date((year - 1) + '-01-01'),
maxDate: new Date((year + 1) + '-12-31'),
yearRange: [year - 1, year + 1],
onSelect: function (date) {
controller.$setViewValue(date);
},
defaultDate: scope.$eval(attrs.ngModel), // require: 'ngModel'
setDefaultDate: true
});
// format model values to view
controller.$formatters.unshift(function (modelValue) {
var formatted = (modelValue)
? moment(modelValue).format(momentFormat)
: modelValue;
return formatted;
});
// parse view values to model
controller.$parsers.unshift(function (viewValue) {
if (viewValue instanceof Date) {
return viewValue;
}
else {
return moment(viewValue, momentFormat).toDate();
}
});
}
};
})
Diese verwendet funktionieren , aber nach dem Binden eines Formulars mit diesem Steuerelement wird mein Bereichswert plötzlich von einem Date-Objekt in einen String geändert (ohne jemals mit dem Steuerelement zu interagieren!) Das Lustige ist, dass dies geschieht, ohne dass der Formatierer oder Parser jemals aufgerufen wird. Es sieht so aus, als würde eckig nur den Wert des Bereichs ändern, nur weil er an eine Eingabe vom Typ "Text" gebunden ist, selbst wenn der Wert in der Eingabe niemals berührt wird.
Ich möchte nicht die Eingabe [type = text] verwenden, weil ich nicht möchte, dass der Browser seine eigene Behandlung von Daten erzwingt.
Wenn mein Formatierer/Parser angerufen würde, würde ich wissen, wie man das umgeht, aber das hat mich verwirrt.
ich nur ein Datum in einer Spanne angezeigt werden könnte und eine Schaltfläche, um die Benutzer haben könnten Sie auf die pikaday-Plugin, um laichen, aber ich würde das Verhalten lieber als bleiben ...
Danke mico. Ich habe es am Anfang der Linkfunktion meiner pikaday-Direktive hinzugefügt. Klappt wunderbar. Es ist allerdings eine Schande, dass wir eckigen Winkel anbringen müssen, um das zu funktionieren. – Davy