2016-07-22 9 views
1

ドル金額(5.75)を入力して575に変換し、データベースに保存してからサイトに5.75として再度表示できるようにしようとしています。円と円のJSを持つドル

私は$ 5.00で動作しますが、$ 5.75では動作しません。私が持っているものは以下の通りです。

HTML

<input type="number" class="form-control" ng-model="admin.singleInfo.pricing.cost" monetary-input ng-change="admin.calculateSell(admin.singleInfo.$id); admin.singleInfo.$save();changesSaved()"/> 

FILTER

.filter('MonetaryUnit', function() { 
    return function (amount) { 
     return (amount/100).toFixed(2); 
    } 
}) 

DIRECTIVE

directive('monetaryInput', function($filter, $browser) { 
    return { 
     require: 'ngModel', 
     link: function($scope, $element, $attra, ngModelCtrl) { 
      var listener = function() { 
       $element.val($filter('MonetaryUnit')(value, false)); 
      }; 

      ngModelCtrl.$parsers.push(function(viewValue) { 
       return Math.round(parseInt(viewValue) * 100); 
      }); 

      ngModelCtrl.$render = function() { 
       $element.val($filter('MonetaryUnit')(ngModelCtrl.$viewValue, false)); 
      } 

      $element.bind('change', listener); 
     } 
    } 
}) 
+0

だから、何の答えは、それが動作する必要があるわけありませんか? –

+0

あなたは5.75のために何の答えを得ていますか? parseIntの代わりにparseFloatを使ってみましたか? – heliotrope

答えて

0

それは簡単です。 parseIntparseFloatに変更してください。下記の実施例を参照してください。

var app = angular.module("sa", []); 
 

 
app.controller("FooController", function($scope) { 
 

 
}); 
 

 
app.filter('MonetaryUnit', function() { 
 
    return function(amount) { 
 
    return (amount/100).toFixed(2); 
 
    } 
 
}); 
 

 
app.directive('monetaryInput', function($filter, $browser) { 
 
    return { 
 
    require: 'ngModel', 
 
    link: function($scope, $element, $attra, ngModelCtrl) { 
 
     var listener = function() { 
 
     $element.val($filter('MonetaryUnit')(value, false)); 
 
     }; 
 

 
     ngModelCtrl.$parsers.push(function(viewValue) { 
 
     return Math.round(parseFloat(viewValue) * 100); 
 
     }); 
 

 
     ngModelCtrl.$render = function() { 
 
     $element.val($filter('MonetaryUnit')(ngModelCtrl.$viewValue, false)); 
 
     } 
 

 
     $element.bind('change', listener); 
 
    } 
 
    } 
 
})
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script> 
 

 

 
<div ng-app="sa" ng-controller="FooController"> 
 
    <input type="text" ng-model="amount" monetary-input /> 
 

 
    <br>Model value: {{amount}} 
 
</div>