2016-01-29 2 views
1

Я знаю, что есть функция , которая дает все результаты математики, такие как 3+4, 5*4+(5+6) .. Но я реализую одну вещь в поле ввода, когда я ввожу любую вещь, как 5k, она конвертирует в тысячах размытие. Теперь мне нужно реализовать все математические операции, такие как (5k +2k) ..Подробнее (2k*2k) ..Как оценить выражение в угловом?

Можно ли отображать выходные данные до two десятичных знаков?

HTML

<div ng-controller='cntrl'> 
    <input type='text' ng-model='user' ng-blur="change()"> 
    <input type='text' to-number ng-model='second'>  
</div> 

код контроллера

var dict = { 
    k: 1000, 
    l: 100000 
}; 
$scope.change = function(){ 
     var regex = /^([-+]?[0-9,]*\.?[0-9]+)([kl])$/; 
     var match; 
     if(angular.isString($scope.user) && (match = $scope.user.match(regex))) { 
     $scope.user = match[1].replace(/,/g , "") * dict[match[2]]; 
     $scope.user = numberFilter($scope.user, 0); 
     } 
} 

http://plnkr.co/edit/FalqWJFCqaFyvJ1xMced?p=preview

+0

косяк вы замените k с '000'? – biobirdman

+0

Я заменяю 5k на 5000 – user944513

ответ

1

Возможный ответ (http://plnkr.co/edit/Uvv9zHtsAL44rIrYpsS5?p=preview):

$scope.change = function() { 
    var regex = /[0-9,]*\.?[0-9]+[kl]/g; 
    var match; 
    if (angular.isString($scope.user) && (match = $scope.user.match(regex))) { 

     angular.forEach(match, function(m){ 
     angular.forEach(dict, function(value, key){ 
      if(m.endsWith(key)) { 
      var intValue = m.replace(key, '') * dict[key]; 
      $scope.user = $scope.user.replace(m, intValue); 
      } 
     }) 
     }) 

     $scope.user = $scope.$eval($scope.user); 
     $scope.user = numberFilter($scope.user, 0); 
    } 

    } 
+0

@yonn ваш anwser правильный, но есть проблема в том, что пользователь anwser.http: //plnkr.co/edit/RG2AL1ylP5i1hRiOkend? P = preview – user944513

+0

Мне нужно добавить upto в десятичное место. не отображается – user944513

+0

если я напишу 1.2k, он не преобразует 1200 .. – user944513

Смежные вопросы