很少有关于Angular js的表单验证的查询

时间:2015-10-05 13:23:24

标签: angularjs validation

我是棱角分明的新人并试图学习它。

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

2 个答案:

答案 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)

  1. $ pristine是$ dirty的反转。

  2. 文档说:当用户第一次聚焦控制元素然后将焦点移离控件(模糊事件)时,会认为模型被触摸。

  3. 因为有时您希望将控件绑定到作用域中的变量,有时您希望将其绑定到作用域中的对象的字段。推荐后者。特别是,前者在具有自己的范围的指令(如ng-if或ng-repeat)中使用时会导致问题,因为它会在子指令范围而不是控制器范围中设置字段。根据经验,始终使用后者,并始终初始化控制器中的对象(即用户)。

  4. 两者兼而有之。它在HTML5规范中指定,并且角度验证输入的字符串确实是有效的电子邮件地址。

  5. 是的,因为$ dirty是$ pristine

  6. 的反转
  7. 那不会注入任何东西。 'ngMessages'模块的名称。该声明称该模块的应用程序为&#39;取决于模块&#39; ngMessages&#39;。因此,ngMessages模块中定义的所有指令,服务,控制器和过滤器都将在应用程序模块中提供。