Я использовал директиву для форматирования числа в валюту, она работала нормально, пока я не отделил шаблон от директивы. теперь не работает.
ДИРЕКТИВА
<number-input ng-model="vm.currencyVal" ng-change="vm.mychangeShovi()"
ng-class="vm.currencyValMsg">
</number-input>
SCRIPT
angular.module('SvUtilities')
.directive('numberInput', function ($filter) {
return {
require: 'ngModel',
link: function (scope, elem, attrs, ngModelCtrl) {
ngModelCtrl.$formatters.push(function (modelValue) {
return setDisplayNumber(modelValue, true);
});
elem.bind('keyup focus', function () {
setDisplayNumber(elem.val());
});
function setDisplayNumber(val, formatter) {
var valStr, displayValue;
if (typeof val === 'undefined') {
return null;
}
valStr = val.toString();
displayValue = valStr.replace(/,/g, '').replace(/[A-Za-z]/g, '');
displayValue = parseFloat(displayValue);
displayValue = (!isNaN(displayValue)) ? displayValue.toString() : '';
// handle leading character -/0
if (valStr.length === 1 && valStr[0] === '-') {
displayValue = valStr[0];
} else if (valStr.length === 1 && valStr[0] === '0') {
displayValue = '';
} else {
displayValue = $filter('number')(displayValue);
}
if (attrs.positive && displayValue[0] === '-') {
displayValue = displayValue.substring(1);
}
if (typeof formatter !== 'undefined') {
return (displayValue === '') ? 0 : displayValue;
} else {
elem.val((displayValue === '0') ? '' : displayValue);
}
}
function setModelNumber(val) {
var modelNum = val.toString().replace(/,/g, '').replace(/[A-Za-z]/g, '');
modelNum = parseFloat(modelNum);
modelNum = (!isNaN(modelNum)) ? modelNum : 0;
if (modelNum.toString().indexOf('.') !== -1) {
modelNum = Math.round((modelNum + 0.00001) * 100) / 100;
}
if (attrs.positive) {
modelNum = Math.abs(modelNum);
}
return modelNum;
}
},
restrict: "E",
replace: true,
templateUrl: "../svAngularLib/modules/utilities/directives/currencyDir.html",
scope: {
cssColor: '=',
onChange: '&',
},
controllerAs: 'vm',
bindToController: true
};
});
ОБРАЗЕЦ
<div>
<input maxlength="16" type='text' number-input ng-model="vm.currencyVal"
value="vm.currencyVal" ng-change="" ng-class="" />
<span class="input-group-addon">₪</span>
</div>
При наборе чисел следует добавить разделители запятых, также я хочу добавить к нему некоторую функцию (ng-change) или свойства (класс CSS)