gpt4 book ai didi

javascript - 多个元素的 Angular Directive(指令)

转载 作者:行者123 更新时间:2023-11-30 11:54:02 25 4
gpt4 key购买 nike

我创建了这个数字格式指令,但如果我在多个输入上使用它,它并不适用于所有输入,但只有一个有效。有什么想法吗?

directive('formatUsNumber', function() {
return {
restrict: 'A',
require: 'ngModel',
priority: 100,
link: function(scope, element, attrs, ngModel) {

scope.formatNumber = function() {
var n = element.val();
var dest = n;
if (n.length >= 10) {
if (/^[A-Za-z\s]+$/.test(n)) {
return;
}
dest = n.replace(/\D/g, '');
if (!isNaN(dest)) {
n = dest;
}
if (n.substr(0, 1) != "1") {
n = "1" + n;
}
}
element.val(n);
ngModel.$setViewValue(n);
};
},
};
});

模板:

<input type="text" ng-change="formatNumber()" format-us-number ng-model="myModel" />

fiddle :http://jsfiddle.net/Lvc0u55v/7479/

最佳答案

我认为这是因为指令的范围不是孤立的。而且我也做了一些改变,希望它能正常工作

directive('formatUsNumber', function() {
return {
restrict: 'A',
require: 'ngModel',
priority: 100,
scope: true,
link: function(scope, element, attrs, ngModel) {

scope.formatNumber = function() {
var n = ngModel.$modelValue;
if (n.length >= 10) {
if (/^[A-Za-z\s]+$/.test(n)) {
return;
}
n = n.replace(/\D/g, '');
if (!isNaN(dest)) {
n = dest;
}
if (n.substr(0, 1) != "1") {
n = "1" + n;
}

ngModel.$setViewValue(n, 'change:directive');
}
};
},
};
});

你可以测试一下here

关于javascript - 多个元素的 Angular Directive(指令),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38600101/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com