2015-10-05 49 views
0

我是角度新人,想学习它。很少有关于Angular js的表单验证的问题

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和$ dirty而不是$ pristine吗?

6)看到代码

angular 
    .module('app', ['ngMessages']) 
    .controller('MainCtrl', MainCtrl); 

function MainCtrl() { 

} 

他们在注入其他指令到应用程序模块....这是注入

.module('app', ['ngMessages']) 

请参阅我的观点,引导我回答的方式为我的每一点,如果可能的话。你的回答会帮助我理解和学习角度js.thanks

回答

0
  1. $ pristine是$ dirty的倒数。

  2. 文档说:甲模型被认为是被触摸用户何时第一聚焦控制元件,然后将焦点转移来自控制(模糊事件)的距离。

  3. 因为有些时候你想将控件绑定到作用域中的一个变量,有时候你想把它绑定到作用域中的一个对象的域。后者是推荐的。特别是前者在使用自己的作用域的指令(如ng-if或ng-repeat)内引起问题,因为它将在子指令作用域而不是控制器作用域中设置该字段。根据经验,始终使用后者,并始终初始化控制器中的对象(即用户)。

  4. 它都是。它是在HTML5规范中指定的,角度验证输入的字符串确实是一个有效的电子邮件地址。

  5. 是,因为$脏的$这并不注入任何逆质朴

  6. 'ngMessages'模块的名称。这个声明说模块的'app'取决于模块'ngMessages'。因此,在ngMessages模块中定义的所有指令,服务,控制器和过滤器都将在应用程序模块中可用。

+0

在点4,如果我们去掉'TYPE =“电子邮件“那么会发生什么?角度无法验证电子邮件? – Mou

+0

@Mou不,角将不验证电子邮件。如果输入信息不是电子邮件,它怎么能知道这个值应该是一封电子邮件?为什么不测试它,并阅读文档? –

+0

感谢您的意见。 – Mou

1

1)$原始是用于指示该字段没有被修改,而$脏为告诉它已被修改。

$ pristine:如果用户还没有与表单交互,它将为TRUE。

$ dirty:如果用户已经与表单交互过,它将为TRUE。

2)$ touch告诉您用户是否仅仅在那里/访问过。

$ touch:如果控件失去焦点,则为真。

3)因为NG-模型= “名称”名称属性被直接绑定到$范围,以及用于NG-模型= “user.username”用户势必$范围用户有一个属性用户名为。 认为它是: - 用户对象用户名是其财产。

4)不知道,但我觉得没有什么特定的。

5)

6)这里您注射ngMessages您的角模块

+0

与形式交互或不......这是什么意思。假设如果我把重点放在一个形式的文本形式,那么应该考虑...互动? – Mou

+0

第3点解释不清楚。假设我有模型说员工,那么当我们绑定一些时间将写ng-model =“name”和一些时间ng-model =“user.salary”,这只是不清楚。你可以拿出相关的示例代码来更加清楚。谢谢 – Mou