我有以下代码
<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以及从哪里读取。
有人可以澄清一下吗?
答案 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}}。将其置于输入元素的上方或下方,并在键入时动态更改值。