入力に属性iを挿入するだけで数字や小数点を受け付けるディレクティブを作成しようとしていますが、問題は小数点以下の桁で宣言されています。
例:ユーザーはこれだけの入力がintの数値を受け入れるためにいただきました場合は は、ユーザが入力
<input only-number type-num="decimal" maxDecimalPoints="2">
ようになるだけで小数点以下の桁を望んでいる
<input only-number type-num="int">
ケースのようなものだろうが、今私はtypeNumとMaxDecimalPointsを$観察する必要があります、私はお互いの中で$観察を入れ子にすることができますか?どのように私は達成することができますか?ここで
は私のディレクティブです:
angular.module('app')
.directive('onlyNumber', function(){
return {
require: '?ngModel',
link: function(scope, element, attrs, ngModelCtrl) {
if(!ngModelCtrl) {
return;
}
// Only Int Numbers
attrs.$observe('typeNum', function(value){
if(value == "int"){
ngModelCtrl.$parsers.push(function(val) {
if (angular.isUndefined(val)) {
var val = '';
}
var clean = val.replace(/[^0-9]+/g, '');
if (val !== clean) {
ngModelCtrl.$setViewValue(clean);
ngModelCtrl.$render();
}
return parseInt(clean);
});
}
});
// Only Decimal
attrs.$observe('typeNum', function(value){
if(value == "decimal"){
// Now Check limit of decimal places
}
});
element.bind('keypress', function(event) {
if(event.keyCode === 32) {
event.preventDefault();
}
});
}
};
});
多くのことをあなただけ 'NGパターンを使用することができるとき'とパターンを変数 – charlietfl
として渡しますが、検証でエラーを表示するのではなく、より多くのcharectersを挿入できるようにすることはできません。なぜng-patternを使用しなかったのでしょうか? –
'maxDecimalPoints'属性は' max-decimal-points'でなければならないことに注意してください。 – charlietfl