Javascript 吴秀表情。。。如何调试它
我有以下代码Javascript 吴秀表情。。。如何调试它,javascript,angularjs,debugging,Javascript,Angularjs,Debugging,我有以下代码 <span ng-show="form.email.$error.unique">Email already exists</span> 它说未定义 我会打字 form.email 它告诉我 <input name="email" ng-model="model.email" required class="ng-dirty ng-invalid ng-invalid-unique"> 所以问题是为什么我不能在chrome控
<span ng-show="form.email.$error.unique">Email already exists</span>
它说未定义
我会打字
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
所以,对于什么是实际的工作流程,这是非常令人困惑的。。。设置$error的位置和读取它的位置
有人能澄清这一点吗?与其在控制台中进行调试,不如使用一种有用的技术,只在视图中输出变量:{form.email.$error.unique}。将其放在输入元素的上方或下方,并在键入时观察值的动态变化。下载Chrome的AngularJS Batarang插件。启用后,您可以检查任何元素,并且在控制台中,
$scope
将是所选元素的范围。然后,您可以检查您提到的
span
,并在控制台中键入$scope.form.email.$error.unique
,您将获得它的当前值。
或者如果您不想安装该插件(我更愿意安装它),您可以通过javascript获取当前作用域,如
angular.element(document.getElementById(…).scope()
,然后检查该作用域(当然,您可以通过其他方式获取元素,然后按照
document.getElementById(…)
我不确定如何使用控制台,我只会将该变量输出到跨度上方的浏览器。当您在控制台中键入form.email时,它会显示来自DOM的元素,该元素没有$error属性。Angular创建FormController并将其附加到范围。表单控制器定义了$error属性。是的,我可以这样做。。。但是我仍然想知道如何从控制台访问值。还有。。我根本不清楚的是。。。指令正在控制器对象上设置$setValidity。ng show正在从.elem.$error表单读取它。所以我不明白的是这两个是如何连接的。这可能可以从broswer控制台(使用jQuery)访问form.email.$error.unique:$('form[name=“formName”]').scope().form.email.$error.unique;查看此页面:没有此页面,就不可能访问角度函数(指令、服务、工厂、控制器)中定义的变量
<input name="email" ng-model="model.email" required class="ng-dirty ng-invalid ng-invalid-unique">