Ich versuche, einen Zoll zu mm Konverter zu implementieren ... Alles was ich will ist, wenn Benutzer einen Wert in Zoll im Textfeld eingibt, das Textfeld (anzeigen) sollte den Wert in Zoll anzeigen. Wo sollte das Modell den Wert in mm halten. Dafür habe ich eine Direktive wie unten beschrieben geschrieben.
Das Modell wird in mm aktualisiert, wie ich es durch Debugging überprüft habe. Wenn ich jedoch außerhalb des Textfelds klicke (Blur-Ereignis), wechsle die Ansicht auf eine andere Registerkarte in meiner Web-App und kehre zurück, der Modellwert wird wieder in das Textfeld eingetragen. Also dachte ich, dass ich beim Fokusereignis $ modelValue/25 (mm to inch conversion) als Parameter an die Funktion $ setViewValue() übergeben kann. Aber ich bekomme $ ModelValue Attribut als undefiniert.
.directive('metricImperialInput', function($timeout){
return{
require: 'ngModel',
link: function(scope, element, attrs, modelCtrl){
element.bind("focus", function(e) {
$timeout(function() {
modelCtrl.$setViewValue(modelCtrl.$modelValue/25);
modelCtrl.$render();
}, 0);
});
modelCtrl.$parsers.push(function(inputValue){
var changedOutput = parseInt(inputValue) * 25;
modelCtrl.$setViewValue(parseInt(inputValue));
modelCtrl.$render();
return parseInt(changedOutput);
});
}
};
});