scope是angularJS中的作用域(其实就是存储数据的地方),很类似javascript的原型链 。搜索的时候,优先找自己的scope,如果没有找到就沿着作用域链向上搜索,直至到达根作用域rootScope。
{{title}}
{{item}}
{{title}}
{{item}}
看一下页面上的展示:
$.title的value: {{title}}
$.title的value:
然后对应页面上的结果是:
第二个红色框表示ng-bind应用有input标签上不可显示,没有作用。
test ng-class
注意此时代码中使用的class不是ng-class。
test ng-class
这种用法就是说showRed为true时,就给元素加上red这个class,如果variable为false就加上yellow这个class,这个在逻辑比较简单的时候还是蛮好用.
test ng-class
上面的这种是对于需要通过true/false的值来进行同一种样式的选择,如果是对于不同的样式一次进行多个赋样式的话我们可以这样
test ng-class
当showRed为true时,增加color样式;当fontSizeUpdate为true时,增加font样式。这种方式与第二种相比的好处在于,可以在ng-class中一次性操作过多个class文件,并且决定是否添加给当前元素。
test ng-class
切记red中的单引号不能丢了
test ng-class
这个例子是不是有点矛盾,最后这个div会show出来,因为样式后面会覆盖前面的样式。
Angular
1.必填项:{{user.name}}
$pristine 【没修改】:{{myForm.name.$pristine }}
$dirty【修改过】:{{myForm.name.$dirty}}
$invalid【验证失败】:{{myForm.name.$invalid}}
$invalid【验证成功】:{{myForm.name.$valid}}
required:{{myForm.name.$error.required}}
2.最小长度=5:{{user.minlength}}
$pristine 【没修改】:{{myForm.minlength.$pristine }}
$dirty【修改过】:{{myForm.minlength.$dirty}}
$invalid【验证失败】:{{myForm.minlength.$invalid}}
$invalid【验证成功】:{{myForm.minlength.$valid}}
$error【错误详情】:{{myForm.minlength.$error}}
接下来我们会在这个示例中去观察一些点(对于上面的验证):
首先看一下页面上展示的红色框内,这里对应的代码为:
1.必填项:{{user.name}}
$pristine 【没修改】:{{myForm.name.$pristine }}
$dirty【修改过】:{{myForm.name.$dirty}}
$invalid【验证失败】:{{myForm.name.$invalid}}
$invalid【验证成功】:{{myForm.name.$valid}}
required:{{myForm.name.$error.required}}
2.最小长度=5:{{user.minlength}}
$pristine 【没修改】:{{myForm.minlength.$pristine }}
$dirty【修改过】:{{myForm.minlength.$dirty}}
$invalid【验证失败】:{{myForm.minlength.$invalid}}
$invalid【验证成功】:{{myForm.minlength.$valid}}
$error【错误详情】:{{myForm.minlength.$error}}
a. 提到这里就不得不提一些form属性:
formName.inputFieldName.$pristine :布尔值属性,表示用户是否修改了表单。如果为ture,表示没有修改过;false表示修改过
formName.inputFieldName.$dirty :布尔型属性,当且仅当用户实际已经修改的表单。不管表单是否通过验证
formName.inputFieldName.$valid
:布尔型属性,它指示表单是否通过验证。如果表单当前通过验证,他将为true
formName.inputFieldName.$invalid :布尔型属性,未通过验证的表单
这里的formName指的是form的name属性值,inputFieldName指的是input标签的name属性值。例如myForm.name.$pristine。
b. 这里的这些验证情况当然通过ng-submit提交表单的时候传入表单的name,然后在处理方法中查看验证信息,如下图
c. 对于表单验证初始都是没有值的,然后我们把当前例子中的初始值去掉,然后看一下页面的显示:
我们可以看到必填项已经显示红框了。这样其实是不对的,因为用户还没有输入,你的验证就不应该开始,所以我们需要修改一代码,
我们把ng-invalid换一个名称ng-error,然后修改一下input的代码。
这个时候我们的验证就会在用户输入之后才开始,关键点就是:myForm.name.$dirty && myForm.name.$invalid。
d. 在(3)中我们提到了ng-invalid class,这个class的名称不是我们自定义的,是ng自己定义的名称。
.ng-valid { }
.ng-invalid { }
.ng-pristine { }
.ng-dirty { }
.ng-invalid-required { }
.ng-invalid-minlength { }
.ng-valid-max-length { }
它们对应着表单输入字段的特定状态。
例如当某个字段中的输入非法时,.ng-invlid类会被添加到这个字段上。 你可以编辑自己喜欢的CSS . 你可以私有定制化这些类来实现特定的场景应用.
e. 还有就是其实浏览器对于表单的验证有着自己的默认行为,例如下图
我们想要去除这些默认的表单行为,我们需要在form标签中加上novalidate属性。
(5) ng-true-value / ng-false-value
当我们点击checkbox 选中复选框时,ng-model 的绑定默认值是true,取消选中时为false.如果我们需要获取的值为字符串或者数字呢?
那么就需要用到 ng-true-value 和ng-false-value.
//注意 ng-true-value 中的值 如果需要显示字符串的话必须使用单引号.
然后我们看一下具体的这个input标签内部的信息:
请看红色框内的信息,一个是$viewValue($viewValue属性保存着更新视图所需的实际字符串),另一个是$modelValue($modelValue由数据模型持有。$modelValue和$viewValue可能是不同的,取决于$parser流水线是否对其进行了操作。),我们可以在modelValue中查看到hello world,具体这两个属性的值等到我们学习到自定义指令的时候再去看,我们现在知道在哪里可以取值的就好了。
(6) ng-option
ng-options不需要option,会自动生成,ng-options 一定要和ng-model 搭配
a. 先看一个简单的方式(label for value in array)
usage:label for value in array
选项,{{optData.Selected}}
b. 自定义下拉显示名称(label for value in array) label可以根据需要拼接出不同的字符串
usage:label for value in array
选项,{{optData.Selected}}
主要的改变是:
o.id + '-' + o.MainCategory 可以加上括号或者不加都行。
c. ng-options 选项分组 group by分组项
在b的基础上加上group by ~.
d. ng-options 自定义ngModel的绑定
下面selected的值为optData的id,这里show的是ProductName,选择的是id
usage:label for value in array
选项,{{optData.Selected}}
可以看到show出来的值与选择获取到的值是不一样的:
e. 二级菜单
(7) ng-selected 指令用于设置
具体的使用在(6)中已经有着例子了。
(8) ng-submit
ng-submit 指令用于在表单提交后执行指定函数,作用在form元素上。