Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/387.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript ng禁用在尝试使用自定义指令时不工作_Javascript_Angularjs_Scope_Custom Directive - Fatal编程技术网

Javascript ng禁用在尝试使用自定义指令时不工作

Javascript ng禁用在尝试使用自定义指令时不工作,javascript,angularjs,scope,custom-directive,Javascript,Angularjs,Scope,Custom Directive,我正在学习AngularJS。我试图制定一个自定义指令,检查电子邮件是否已经存在。我从拥有9个用户的阵列中收到电子邮件,我可以使用Factory成功地获得他们。我的自定义指令的问题是,无论输入什么,按钮都将被禁用。该指令的思想是,当我失去焦点时,它将检查电子邮件是否存在。如果存在,它将禁用按钮。如果不存在,则按钮将被启用 .directive("registerUser",function(){ return {

我正在学习AngularJS。我试图制定一个自定义指令,检查电子邮件是否已经存在。我从拥有9个用户的阵列中收到电子邮件,我可以使用Factory成功地获得他们。我的自定义指令的问题是,无论输入什么,按钮都将被禁用。该指令的思想是,当我失去焦点时,它将检查电子邮件是否存在。如果存在,它将禁用按钮。如果不存在,则按钮将被启用

.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);