angularJS错误:变量未定义,即使在isDefined()函数内部也是如此

时间:2017-05-14 05:33:21

标签: javascript jquery angularjs

我检查了类似的问题,但没有一个适用于这种情况。

我有一个有角度的应用程序,我试图手动验证,但我遇到了这个问题。

为简化起见,我只包含电子邮件字段,表单字段已在另一个函数中验证,该函数将$ scope.regform.email.valid变量设置为true或False。

当你故意在字段中输入错误的信息时这很有效,但是如果没有输入任何内容,并且按下了注册按钮,我想做一个isDefined检查,它似乎不起作用。

//this is inside the function that runs is the register button is pressed.
//in this test case nothing has been entered in the email field when the register button is pressed.

email = angular.isDefined($scope.regform.email.valid);
console.log(email);

isDefined函数用于检查变量是否已定义,但如果未定义,则会发生以下错误,而不是' email'评估为假。

TypeError: $scope.regform.email is undefined
Stack trace:
studyseshController/$scope.checkValid@http://localhost:8000/bundles/framework/js/app.js:17:13
anonymous/fn@http://localhost:8000/bundles/framework/js/angular.min.js line 239 > Function:2:147
bd[b]</<.compile/</</e@http://localhost:8000/bundles/framework/js/angular.min.js:284:195
Mf/this.$get</m.prototype.$eval@http://localhost:8000/bundles/framework/js/angular.min.js:148:351
Mf/this.$get</m.prototype.$apply@http://localhost:8000/bundles/framework/js/angular.min.js:149:55
bd[b]</<.compile/</<@http://localhost:8000/bundles/framework/js/angular.min.js:284:245
r.event.dispatch@https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js:3:10264
r.event.add/q.handle@https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js:3:8326
angular.min.js:123:218

1 个答案:

答案 0 :(得分:0)

我发现了这个问题,如果还没有定义$ scope.regform.email,你甚至无法检查是否已经定义了电子邮件中的索引。我更改了isDefined,首先检查是否定义了$ scope.regform.email,然后再检查$ scope.regform.email.valid是否已定义。这产生了我正在寻找的结果。