Javascript ng禁用在尝试使用自定义指令时不工作
我正在学习AngularJS。我试图制定一个自定义指令,检查电子邮件是否已经存在。我从拥有9个用户的阵列中收到电子邮件,我可以使用Factory成功地获得他们。我的自定义指令的问题是,无论输入什么,按钮都将被禁用。该指令的思想是,当我失去焦点时,它将检查电子邮件是否存在。如果存在,它将禁用按钮。如果不存在,则按钮将被启用Javascript ng禁用在尝试使用自定义指令时不工作,javascript,angularjs,scope,custom-directive,Javascript,Angularjs,Scope,Custom Directive,我正在学习AngularJS。我试图制定一个自定义指令,检查电子邮件是否已经存在。我从拥有9个用户的阵列中收到电子邮件,我可以使用Factory成功地获得他们。我的自定义指令的问题是,无论输入什么,按钮都将被禁用。该指令的思想是,当我失去焦点时,它将检查电子邮件是否存在。如果存在,它将禁用按钮。如果不存在,则按钮将被启用 .directive("registerUser",function(){ return {
.directive("registerUser",function(){
return {
link:function($scope, element) {
element.bind('blur',function () {
var emailInput = element.val();
var flag = "false";
$scope.registeredUsers.forEach(element => {
if(emailInput === element.email){
flag = "true";
console.log(emailInput);
console.log(flag);
return;
}
});
$scope.invalidemail = flag;
});}
}
})
这是我的指令,你可以看到,我尝试使用标志,但它不起作用,我尝试将标志更改为布尔值,但仍然不起作用,我还将显示我的HTML。我不确定var emailInput=email.val()是否会给我带来问题,因为我没有使用ng模型
<form action="">
<input type="text" name="emailField" ng-model="emailInput" register-user>
<input type="button" name="" value="check" ng-disabled= invalidemail>
</form>
这是我的HTML。注意:我不检查电子邮件在此任务中是否有效。我只是检查我的数组中是否已经存在电子邮件。将
标志的值设置为字符串“true”
或字符串“false”
,而不是true
或false
的布尔值
// not "false"
var flag = false;
// subsequently set it to true not "true"
表单模板在ng disabled
和绑定值之间有一个空格
<input type="button" name="emailButton" value="check" ng-disabled="invalidemail" />
我使用了你的方法,并记录了正确返回true和false的值。但是,ng disabled一点也没有改变@LouaySaeed你能在页面上添加{{invalidemail}}
,看看真/假是否正确显示吗?没有,我认为指令中有错误。因为,例如,如果我输入并尝试第一次显示正确,我再次输入焦点,它不工作,我必须刷新页面才能工作。假设我输入现有电子邮件,它将显示为真,如果我删除输入并添加不存在的电子邮件,则禁用该按钮,它仍将显示为真。如果我刷新页面并输入不存在的电子邮件,它将显示false并禁用按钮,如果我输入存在的电子邮件,它也将保持false。注意:有时在尝试了几次之后,它会发生变化,我不知道怎么做。。苦不堪言
const emailInput = element.val();
$scope.invalidemail = !$scope.registeredUsers.some(element => emailInput === element.email);