我有以下代码
<span ng-show="form.email.$error.unique">Email already exists</span>
这是正确的,如果在"电子邮件"输入字段中输入的电子邮件已经存在于我们的数据库中,我可以看到span元素。
然而,如果我进入铬控制台。然后键入
form.email.$error
上面写着未定义。
我可以输入
form.email
它给我看
<input name="email" ng-model="model.email" required class="ng-dirty ng-invalid ng-invalid-unique">
所以问题是为什么我不能在chrome控制台中看到$error?这个值肯定存在,因为angular正在读取它,并根据这个值决定是否显示跨度。
编辑::在进一步阅读文档后,我觉得检查电子邮件是否有效的指令。。。设置控制器对象的有效性(第四个参数。$setValidity)
但是不知何故,UI从UI元素中读取了$错误。
因此,对于实际的工作流程是什么,这是非常令人困惑的。。。其中是正在设置的$error,以及从哪里读取它。
有人能澄清一下吗?
与其在控制台中调试,不如在视图中输出变量:{{form.email.$error.unique}}。将其放在输入元素的上方或下方,并在输入时观察值的动态变化。
下载适用于Chrome的AngularJS Batarang插件。启用后,您可以检查任何元素,并且在控制台中$scope
将是所选元素的范围
然后,您可以检查您提到的span
,并在控制台中键入$scope.form.email.$error.unique
,您将获得它的当前值。
或者如果您不想安装该插件(我更喜欢安装它),您可以通过javascript获取当前作用域,如angular.element(document.getElementById(...)).scope()
,然后检查该作用域
(当然,您可以通过其他方式获得元素,然后根据document.getElementById(...))