ng-show expression ...如何调试它

时间:2014-09-10 01:12:23

标签: javascript angularjs debugging

我有以下代码

<span ng-show="form.email.$error.unique">Email already exists</span>

这是正常工作的,如果在&#34; email&#34;中输入的电子邮件,我能够看到span元素。输入字段已存在于我们的数据库中。

但是,如果我进入chrome控制台。然后键入

form.email.$error

它说未定义。

我可以输入

form.email 

它告诉我

​<input name=​"email" ng-model=​"model.email" required class=​"ng-dirty ng-invalid ng-invalid-unique">

所以问题是为什么我在Chrome控制台中看不到$ error?这个值肯定存在,因为角度正在读取它并且根据它决定是否显示跨度的值。

编辑::在进一步阅读文档时,我觉得检查电子邮件是否有效的指令...设置控制器对象的有效性(第4个参数。$ setValidity)

但不知何故,UI从UI元素中读取$ error。

这使得实际的工作流程非常混乱......在哪里设置$ error以及从哪里读取。

有人可以澄清一下吗?

2 个答案:

答案 0 :(得分:4)

下载适用于Chrome的 AngularJS Batarang 插件。启用后,您可以检查任何元素,并在控制台中$scope将是所选元素的范围 然后,您可以检查提到的span并输入控制台$scope.form.email.$error.unique,然后您将获得它的当前值。

或者如果您不想安装该插件(我更愿意安装它),您可以通过javascript获取当前范围,如angular.element(document.getElementById(...)).scope(),然后检查该范围。
(当然,你可以按照document.getElementById(...))

的其他方式获取元素

答案 1 :(得分:3)

不是在控制台中进行调试,而是使用一种有用的技术就是在视图中输出变量:{{form.email。$ error.unique}}。将其置于输入元素的上方或下方,并在键入时动态更改值。