0

Я использую директиву для отображения денег в нужном формате из этого URL http://jsfiddle.net/ExpertSystem/xKrYp/angularjs директива, как я могу удалить валюту

Кто-нибудь знает, как я могу удалить символ $ из выходного значения и имеют только фактическое количество конвертируется?

Пробовал несколько разных вещей, но я не смог выполнить то, что искал.

Вот директива, а также:

app.directive('realTimeCurrency', function ($filter, $locale) { 
    var decimalSep = $locale.NUMBER_FORMATS.DECIMAL_SEP; 
    var toNumberRegex = new RegExp('[^0-9\\' + decimalSep + ']', 'g'); 
    var trailingZerosRegex = new RegExp('\\' + decimalSep + '0+$'); 
    var filterFunc = function (value) { 
     return $filter('currency')(value); 
    }; 

    function getCaretPosition(input){ 
     if (!input) return 0; 
     if (input.selectionStart !== undefined) { 
      return input.selectionStart; 
     } else if (document.selection) { 
      // Curse you IE 
      input.focus(); 
      var selection = document.selection.createRange(); 
      selection.moveStart('character', input.value ? -input.value.length : 0); 
      return selection.text.length; 
     } 
     return 0; 
    } 

    function setCaretPosition(input, pos){ 
     if (!input) return 0; 
     if (input.offsetWidth === 0 || input.offsetHeight === 0) { 
      return; // Input's hidden 
     } 
     if (input.setSelectionRange) { 
      input.focus(); 
      input.setSelectionRange(pos, pos); 
     } 
     else if (input.createTextRange) { 
      // Curse you IE 
      var range = input.createTextRange(); 
      range.collapse(true); 
      range.moveEnd('character', pos); 
      range.moveStart('character', pos); 
      range.select(); 
     } 
    } 

    function toNumber(currencyStr) { 
     return parseFloat(currencyStr.replace(toNumberRegex, ''), 10); 
    } 

    return { 
     restrict: 'A', 
     require: 'ngModel', 
     link: function postLink(scope, elem, attrs, modelCtrl) {  
      modelCtrl.$formatters.push(filterFunc); 
      modelCtrl.$parsers.push(function (newViewValue) { 
       var oldModelValue = modelCtrl.$modelValue; 
       var newModelValue = toNumber(newViewValue); 
       modelCtrl.$viewValue = filterFunc(newModelValue); 
       var pos = getCaretPosition(elem[0]); 
       elem.val(modelCtrl.$viewValue); 
       var newPos = pos + modelCtrl.$viewValue.length - 
            newViewValue.length; 
       if ((oldModelValue === undefined) || isNaN(oldModelValue)) { 
        newPos -= 3; 
       } 
       setCaretPosition(elem[0], newPos); 
       return newModelValue; 
      }); 
     } 
    }; 
}); 

Спасибо заранее, Лацьал

+0

Для наглядности вы хотите, чтобы текстовое управление не отображало знак $? – defaultcheckbox

+0

@defaultcheckbox correct – Laziale

ответ

0

https://github.com/bcherny/format-as-currency Попробуйте :)

Или, если вы хотите использовать свою собственную версию, передать пустую строку второй аргумент для фильтра currency. См. https://docs.angularjs.org/api/ng/filter/currency

+0

Спасибо, попробовав теперь – Laziale

+0

Можно ли полностью удалить валюту из вашей директивы? – Laziale

+0

Да, посмотрите на этот пример, но вместо Yuan используйте пустую строку. https://github.com/bcherny/format-as-currency#with-a-custom-currency-symbol – bcherny