2014-07-07 3 views
10

Hallo, wenn ich span-Tags verwende ich das Geld Filter wieNehmen Währung Filter in das Eingabefeld in AngularJS

<div ng-repeat="item in items"> 
    <span> 
     {{item.cost | currency}} 
    </span> 
</div> 

anwenden kann ich frage mich, wie ich gleiche Währung Filter in Input-Tag anwenden können. d. h.

Wenn ich versuche, Währungsfilter auf das Eingabefeld anzuwenden, funktioniert es nicht. Bitte lassen Sie mich wissen, wie man den Währungsfilter auf das Eingabefeld anwendet. Danke

+1

Schauen Sie sich diese Antwort: http://stackoverflow.com/questions/19890364/format-input-value-in-angularjs – karliwson

+0

https://docs.angularjs.org/api/ng/filter/currency –

Antwort

1
<!doctype html> 
<html lang="en"> 
<head> 
    <meta charset="UTF-8"> 
    <title>Example - example-example52-production</title> 


     <script src="//ajax.googleapis.com/ajax/libs/angularjs/1.3.0-beta.14/angular.min.js"></script> 



     </head> 
     <body ng-app=""> 
     <script> 
    function Ctrl($scope) { 
     $scope.amount = 1234.56; 
    } 
     </script> 
     <div ng-controller="Ctrl"> 
     <input type="number" ng-model="amount"> <br> 
     default currency symbol ($): <span id="currency-default">{{amount | currency}}</span>    <br> 
     custom currency identifier (USD$): <span>{{amount | currency:"USD$"}}</span> 
     </div> 
     </body> 
     </html> 
3

Leider kann nicht mit ng-Modell formatiert werden. Zumindest nicht so. Sie müssen Ihre eigene Direktive erstellen, die einen Parser und einen Formatierer implementiert. Here is a similar question.

Es ist eine ziemlich gute Richtlinie unser es das tut, dass zur Zeit: ngmodel-format

27

Ich habe eine einfache Direktive erstellt, die die Formatierung von Eingabefeldern behandelt. Hier ist ein jsfiddle Beispiel. Um es zu verwenden, fügen Sie dieses Ihrem vorhandenen Code hinzu.

<div ng-repeate="item in items"> 
    <input type="text" ng-model="item.cost" format="currency" /> 
</div> 

Und fügen Sie diese Richtlinie Ihrem Code hinzu.

// allow you to format a text input field. 
// <input type="text" ng-model="test" format="number" /> 
// <input type="text" ng-model="test" format="currency" /> 
.directive('format', ['$filter', function ($filter) { 
    return { 
     require: '?ngModel', 
     link: function (scope, elem, attrs, ctrl) { 
      if (!ctrl) return; 

      ctrl.$formatters.unshift(function (a) { 
       return $filter(attrs.format)(ctrl.$modelValue) 
      }); 

      elem.bind('blur', function(event) { 
       var plainNumber = elem.val().replace(/[^\d|\-+|\.+]/g, ''); 
       elem.val($filter(attrs.format)(plainNumber)); 
      }); 
     } 
    }; 
}]); 
+5

Aber Modellwert ist betroffen und ist keine Zahl, ist die formatierte Zeichenkette –

-2

Ich schrieb diese Anweisung und es hat mir geholfen, Währungswerte zu formatieren. Ich hoffe es hilft jemandem.

.directive('numericOnly', function(){ 
    return { 

     require: 'ngModel', 
     link: function(scope, element, attrs, modelCtrl) { 

      var regex = /^[1-9]\d*(((.\d{3}){1})?(\,\d{0,2})?)$/; 
      modelCtrl.$parsers.push(function (inputValue) { 

       var transformedInput = inputValue; 
       if (regex.test(transformedInput)) { 

        console.log('passed the expression...'); 
        modelCtrl.$setViewValue(transformedInput); 
        modelCtrl.$render(); 
        return transformedInput; 
       } else { 

        console.log('did not pass the expression...'); 
        transformedInput = transformedInput.substr(0, transformedInput.length-1); 
        modelCtrl.$setViewValue(transformedInput); 
        modelCtrl.$render(); 
        return transformedInput; 
       } 
      }); 
     } 
    }; 
}); 
+0

Dies überprüft nur, ob die Eingabe alle Nummern ist, die ein anderes Zeichen nicht zulassen. Es gibt keine Währung irgendwo im Code. – gerl