So einen Dezimalwert in der Steuerung wie diese habe ich:nur die ‚view‘ Wert aktualisieren Winkel Direktive
// Controller
var MyController = function($scope) {
...
$scope.percentValue = 0.05; // can be stored
...
};
<!-- View -->
<span>{{percentValue}}</span>
<input ng-model="percentValue" />
Mit dem obigen Code, der Wert im input
Element ist 0.05
- aber ich will erlauben Sie einem Benutzer, einen ganzzahligen Wert wie 5
einzugeben.
Wenn also die $ scope.percentValue ist 0.05
, möchte ich es als 5
in dem Eingangselement zeigen. Und wenn ein Benutzer 5
eingibt, sollte der $ scope.percentValue0.05
sein.
jedoch hier das heikle Sache ist ich nur die Ansicht Wert aktualisieren wollen - was bedeutet, dass das span
Element noch 0.05
zeigen. Nur der Wert im Eingabeelement sollte 5
sein.
Ich versuche, dies mit ngModel zu erreichen, aber ich kämpfe immer noch. Diese
ist, was ich habe jetzt:
var MyDirective = function() {
function link(scope, element, attrs, ngModel) {
ngModel.$render = function() {
element.val(ngModel.$viewValue || '');
};
ngModel.$formatters.push(function (value) {
return value * 100;
});
element.on('change blur', function() {
ngModel.$setViewValue(element.val());
});
}
return {
restrict: 'A',
require: '?ngModel',
scope: {},
link: link
};
};
Bitte geben !!
versuchen Sie stattdessen einen Filter. – Claies
@KimchiMan, Sie verwenden bereits '$ formatters', um die Modelldarstellung für die Anzeige zu transformieren. Definieren Sie einfach einfach' $ parsers', um es auf die andere Art zu tun, so wie http: //plnr.co/edit/ lB6GaT1ZSrVsOi9PS1u9? p = Vorschau – miqid
@miqid, Ihre Antwort ist genau das, was ich will - könnten Sie den Code im Antwortabschnitt hinzufügen? Ich werde es als Antwort –