我是棱角分明的新人并试图学习它。
https://scotch.io/tutorials/angularjs-form-validation
https://scotch.io/tutorials/angularjs-form-validation-with-ngmessages
我正在阅读有关角js的表格验证的文章,我偶然发现了一些我想在这里讨论的领域。
1)$pristine and $dirty
之间有什么区别。两者看起来都一样
2)需要了解$touched
?它做了什么?
3)见下面的代码
<div class="form-group">
<label>Name</label>
<input type="text" name="name" class="form-control" ng-model="name" required>
</div>
<!-- USERNAME -->
<div class="form-group">
<label>Username</label>
<input type="text" name="username" class="form-control" ng-model="user.username" ng-minlength="3" ng-maxlength="8">
</div>
第一个ng-model="name"
和第二个ng-model="user.username"
为什么有些时候只为ng-model
声明了属性名称,为什么有些时候我们必须写username dot property name
?
4)<input type="email" name="email" class="form-control" ng-model="email">
type="email"
是angular or html5?
5)<p ng-show="userForm.name.$invalid && !userForm.name.$pristine" class="help-block">You name is required.</p>
他们检查$ invalid和$ pristine。他们可以在这里使用$ invalid和$ dirty而不是$ pristine吗?
6)查看代码
angular
.module('app', ['ngMessages'])
.controller('MainCtrl', MainCtrl);
function MainCtrl() {
}
他们是否将其他指令注入app模块....这是注入的方式
.module('app', ['ngMessages'])
如果可能的话,请查看我的观点并指导我回答我的每一点。你的答案将帮助我理解和学习角度js.thanks
答案 0 :(得分:1)
1) $ pristine 用于表示该字段尚未修改,而 $ dirty 用于表示已修改该字段。
$ pristine :如果用户尚未与表单进行交互,则为TRUE。
$ dirty :如果用户已与表单进行过互动,则为“是”。
2)$ touch 告诉您用户是否只是在那里/访问过。
$ touch :如果控件失去焦点,则为真。
3)因为 ng-model =&#34;名称&#34; , 名称 属性直接绑定到 $ scope , ng-model =&#34; user.username&#34; , 用户 < / strong>绑定到 $ scope , 用户 有一个属性 用户名 。 可以将其视为: - 用户 是对象, 用户名 是其属性
4)不确定,但我认为没有具体的内容。
5) 是
6) 是 此处您正在角度模块中注入 ngMessages
答案 1 :(得分:0)
$ pristine是$ dirty的反转。
文档说:当用户第一次聚焦控制元素然后将焦点移离控件(模糊事件)时,会认为模型被触摸。。
因为有时您希望将控件绑定到作用域中的变量,有时您希望将其绑定到作用域中的对象的字段。推荐后者。特别是,前者在具有自己的范围的指令(如ng-if或ng-repeat)中使用时会导致问题,因为它会在子指令范围而不是控制器范围中设置字段。根据经验,始终使用后者,并始终初始化控制器中的对象(即用户)。
两者兼而有之。它在HTML5规范中指定,并且角度验证输入的字符串确实是有效的电子邮件地址。
是的,因为$ dirty是$ pristine
那不会注入任何东西。 'ngMessages'
是模块的名称。该声明称该模块的应用程序为&#39;取决于模块&#39; ngMessages&#39;。因此,ngMessages模块中定义的所有指令,服务,控制器和过滤器都将在应用程序模块中提供。