Angularjs 检查以角度形式归档的文本的重复值
各位 我在表单中有一个文本字段。当用户在此文本字段中输入值时, 我想对照一个值数组检查它,以确保这个值不存在。 我开始写指令,因为我是新手,所以我很迷茫Angularjs 检查以角度形式归档的文本的重复值,angularjs,angularjs-directive,Angularjs,Angularjs Directive,各位 我在表单中有一个文本字段。当用户在此文本字段中输入值时, 我想对照一个值数组检查它,以确保这个值不存在。 我开始写指令,因为我是新手,所以我很迷茫 <input type="text" ng-model="user.name" placeholder="Enter Name" required checkDuplicateName existing-names="allUsers" tooltip/> 我的指示如下: angular.module('formInputs').
<input type="text" ng-model="user.name" placeholder="Enter Name" required checkDuplicateName existing-names="allUsers" tooltip/>
我的指示如下:
angular.module('formInputs').directive('checkDuplicateName', function() {
return {
restrict : 'A',
require : 'ngModel',
link: function(scope, element, attrs, ctrl) {
scope.$watch(attrs.ngModel,function(){
for (var i =0; i<attrs.existing-names.length;i++) {
if (attrs.existing-names[i] === attrs.ngModel) {
attrs.$set('tooltip','Name already exsists');
return;
}
}
});
}
}
});
angular.module('formInputs')。指令('checkDuplicateName',function(){
返回{
限制:“A”,
要求:'ngModel',
链接:函数(范围、元素、属性、ctrl){
作用域$watch(attrs.ngModel,function(){
对于(var i=0;i我在这里创建了一个包含您想法的工作版本。这只是几件小事,看起来您没有正确地传递数据。当您访问attrs时,它只会给您标记中的字符串,因此attrs.ngModel只会给您“users.name”作为字符串
我创建了一个隔离范围,以便您可以看到范围
scope: {
model: '=ngModel',
users: '=existingNames'
},
此外,angular将html中的大小写转换为js中的驼峰大小写,如:thisCaseInHtml
编辑:如果您不想隔离作用域,也可以。您只需要计算作用域上的字符串
这里有一个更新的修改。注意这些值是如何在作用域上计算的
scope.$watch(attrs.ngModel,function(newVal){
var users = scope.$eval(attrs.existingNames) || [];
for (var i =0; i<users.length;i++) {
if (users[i] === newVal) {
window.alert(newVal);
return;
}
}
});
scope.$watch(attrs.ngModel,function(newVal){
var users=scope.$eval(attrs.existingNames)| |[];
对于(var i=0;ihHicker..如果我使用工具提示指令,我无法使用隔离作用域..下面是我得到的错误:错误:[$compile:multidir]多个指令[checkDuplicateName,tooltip]要求在以下位置创建新的/隔离作用域:
scope.$watch(attrs.ngModel,function(newVal){
var users = scope.$eval(attrs.existingNames) || [];
for (var i =0; i<users.length;i++) {
if (users[i] === newVal) {
window.alert(newVal);
return;
}
}
});