ng显示表达式..如何调试它



我有以下代码

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

最新更新