AngularJS 指令是扩展的 HTML属性,带有前缀 ng-。
与angular的作用域对象$scope交互,扩展页面的动态表现力
- 边界指令 ng-app <html ng-app=""></html>
指定模块名,定义angularJS的使用范围,定义了AngularJS应用程序的根元素, 即定义一个AngularJS*应用程序*;声明AngularJS所管辖的区域。一般写在body或者html标签上,是一个特殊的指令,一个HTML文档只出现一次,如出现多次也只有第一个起作用;
意义
自动产生一个根作用域的对象$rootScope 实际会指向模块名
- ng-init="变量=值;变量='值'" 单向数据绑定 (v--m)
NG变量进行初始化
初始化应用程序的变量的值,有多个变量时,中间用分号隔开,全部使用双引号引起来 初始化AngularJS应用程序中的变量值 初始化当前作用域的变量
- ng-model="变量" 定义变量名; 双向数据绑定
ng-model:保存有用户输入的NG变量(表单标签)
把元素值(比如输入域的值)绑定到应用程序变量上
此变量会作为当前作用域对象的属性出现,其属性值等于绑定的html元素的变化
注意该指令只支持表单元素的双向数据绑定
- ng-bind="变量" 解决使用{{}}显示数据闪烁(在很短的时间内显示{{}})
呈现指令{{}}来呈现NG变量
绑定变量名,获取该变量的数据。这里的变量就是第3条的变量名。但是一般都用双重花括号来获取。应用程序数据绑定到 HTML 视图。 把应用程序变量中的值,输出到页面HTML视图中,可以与表达式{{}}互相替换。将NG变量绑定到标签上 用于非输入性的标签 NG框架加载失败也不会报错
- ng-directive是自定义指令的,所以扩展了html
- ng-repeat 遍历ng变量
ng-repeat ="xx in 数组名" xx 一般会是对象 {{xx.属性}}
对于集合中(数组中)的每个项会克隆一次HTML元素。用于循环输出数组元素
遍历数组显示数据 数组有几个元素就会创建几个新的作用域
ng-repeat想要重复哪个元素就写在哪个元素后面,为了防止重复元素的影响,可以写上
track by $index
这个指令的使用前提是在controller中对NG变量进行赋值
ng-repeat 可以去页面观看,每一个都使用了ng-repeat 还自动生成了class
方法:
参数是浏览器给的:$index $first $last $middle,$odd,$even
- ng-click 调用作用域对象的方法(点击时)
ng-click=事件();事件的定义在控制器里, - ng-controller 指定控制器构造函数名 内部会自动创建一个子作用域对象
使用步骤
声明控制器 ng-controller
控制器:操作数据以及视图的部件
只要声明一个标签有用控制器,这个控制器就必须定义,否则报错 - ng-controller 定义了应用程序控制器。控制器是 JavaScript 对象
由JavaScript 对象的构造函 创建。 - 创建该函数 并使用$Scope参数
- 调用函数并使用
- ng-bind
ng-bind 用于普通元素,不能用于表单元素,应用程序单向地渲染数据到元素;
当 ng-bind 和 {{}} 同时使用时,ng-bind 绑定的值覆盖该元素的内容。
ng-bind-html : 相当于 innerHTML 而ng-bind 相当于 innerText
- ng-show 属性值为布尔值,布尔类型:如果为TRUE才显示
- ng-hide 布尔类型 如果为false才显示 相当于display=none
12 ng-if: 是否移除元素 与ng-hide以及ng-show相似
当其表达式为false时一处html元素,表达式结果为true会添加html元素。
13.ng-class:用于设置给元素添加class类。可选值有以下几种情况:
① 可以是字符串。表示直接给元素添加对应的class。多个class之间,用空格分隔。
② 可以是对象。对象的键表示你想添加的class名字,对象的值为true或false,当值为true时表示添加对应的class。
③ 可以是数组,数组可以有字符串或者对象组合组成,数组中的值可以是字符串或对象。
ng-option:该指令在select标签中使用,是创建一个下拉列表 需配合ng-model使用
ng-checked 设置复选框或单选框的选中状态。
ng-switch 根据变量的值,选择不同的ng-switch-when来显示,当没有合适的选项时,显示ng-switch-default
- 生成页面模型
angular.module用于生产NG页面数据模型
语法:var 页面数据模型=angular.module('边界名称',[注入信息]) - 生成页面控制器
页面数据模型.controller('控制器名称',['scope){}])
- 构建路由
页面数据模型.config(['routerProvider){
$routerProvider.
.when('/页面代号',{
template:'要加载的页面的url地址'(以路由地址为起点),
controler:'对应页面的控制器名称'
})
·····
.otherwise({
redirectTo:'/默认加载页面代号'
})
}]) - 过滤服务$filter:格式化数据 系统服务 但是支持自定义
语法:{{任意内容|过滤器}}
自定义过滤服务:
app.filter('自定义过滤器名称',function(){
return function(text){
//对text操作
}
}) - 系统内置服务
时间轴:间隔调用timeout 清除时间轴内容服务
监听服务:scope.$watch('想要监听的字符串或者表达式',function(){})
循环定时 - 自定义服务
value
app.value('服务名',{服务内容Jasn})
constant
类似于value,但是一旦被注入,无法更改,并且多个constant只有第一个起作用
app.constant('服务名',{服务内容Jasn})
factory:返回一个对象
service:服务内部所有内容必须通过this操作
provider
app.provider('服务名',this.$get=fubction(){}) - 自定义指令
页面数据模型.directive('',function(){
return{
restrict:'指令类型',
template:'指令结构',
replace:'指令复写'
}
})