1.angular js的遍历
在传递数据的时候,经常会用到对数据的处理,尤其是数据的遍历
** angular.foreach**
var objs =[{a:”a1”},{a:”a2”}];
angular.forEach(objs, function(data,index,array){
//data等价于array[index]
console.log(data.a+'='+array[index].a);
});
objs:需要遍历的集合
data:遍历时当前的数据 (值) //a1,a2……
index:遍历时当前索引 //1,2,3……
array:需要遍历的集合,每次遍历时都会把objs原样的传一次,也可以不用写后面两个参数。
2.angular js的判断
在html页面中,有时候需要根据条件展示数据。
** ng-if让数据的展示可以依赖于某个条件**
<a href="javascript:;" class="margin-r10" ng-click="goOff(row)" ng-if='row.status=="展示中"'> 下线</a>
<a href="javascript:;" class="margin-r10" ng-click="goOn(row)" ng-if='row.status=="未上线"'> 上线</a>
3.过滤器
接收输入数据,通过过滤器按照某个规则处理后返回结果
可以在模版中使用,也可以在控制器中应用
模版中 {{要表示的表达式|过滤器名称[:参数]}}
控制器中通过依赖注入 $filter
内置过滤器
1 .date(日期格式化) var dateFilter=$filter(‘date’);----------比较常用
dateFilter(date, 'yyyy-MM-dd HH:mm:ss')
第一个参数表示要格式化的对象,第二个参数表示格式化的格式
自定义过滤器
写一个 filter方法
app.filter(‘过滤器名’,function(){
return function(输入的参数){ //闭包
/*函数体*/
return 返回结果
}
})
4.全局变量
- 通过var 直接定义global variable,这跟纯js是一样的。
- 用angularjs value来设置全局变量 。
- 用angularjs constant来设置全局变量
5.ng-repeat 报错问题
控制台报错以下:
[ngRepeat:dupes] Duplicates in a repeater are not allowed. Use 'track by' expression to specify unique keys
发现是因为相同的内容重复引起,解决方案:
在ng-repeat后面加上 track by $index
ng-repeat="word in words track by $index"
**$index **是循环的时候,元素的下标,从0 开始
6.$http服务
$http服务是接受一个对象参数的函数,这个对象包含的是一些生成HTTP请求的配置,返回一个promise对象,具有success和error两个函数,可以通过链式调用。
$http 参数是一个对象,包括有:url: , method: ,params: 这个键的值是一个字符串map或对象,会被转换成查询字符串追加在URL后面 ( 发送GET请求时使用), data: 发送给服务器的数据 (发送POST请求时使用) ,
返回的是一个promise对象,
1.success和error函数
$http({
url: " url.json",
method:"GET"
}).success(function(){
//响应成功
}).error(function(){ //响应失败
})
2.通过then方法处理,参数是两个函数
$http({
url: " url.json",
method:"GET"
}).then(function(){
//响应成功
},function(){
//响应失败
})
7.ng-options的参数情况
例:javascript
$scope.School = [
{
"id": 27,
"name": "北京大学",
"status": 0,
"city":"北京"
},
{
"id": 29,
"name": "北京交通大学",
"status": 0,
"city":"北京"
},
{
"id": 1,
"name": "哈尔滨工业大学(威海)",
"status": 0,
"city":"哈尔滨"
},
{
"id": 10,
"name": "哈尔滨工业大学",
"status": 0,
"city":"哈尔滨"
},
{
"id": 11,
"name": "哈尔滨工程大学",
"status": 0,
"city":"哈尔滨"
}
]
html
<1> 基本下拉菜单 label for value in array
<select ng-model="Select1" ng-options="s.name for s in School">
<option value="">-- 请选择 --</option>
</select>
这里表达式中的value即这里是m 代表的是在School数组中每次取出一个元素
label即这里的s.name 就是输出的显示结果
<2>自定义下拉菜单 label for value in array
<select ng-model="Select2" ng-options="(s.id+'-'+s.name) for s in School">
<option value="">-- 请选择 --</option>
</select>
这里表达式中的value即这里是m 代表的是在School数组中每次取出一个元素
label即这里的 (s.id+'-'+s.name) 就是输出的显示结果(可自定义输出样式)
< 3>群组下拉菜单 label group by group for value in array
<select ng-model="Select3" ng-options="(s.id + ' - ' + s.name) group by s.city for s in School">
<option value="">-- 请选择 --</option>
</select>
显示结果如下:
表达式的by group即这里的 s.city 代表 用这个属性作为条件来筛选群组
<4>自定 select 的 ngModel 的值 select as label for value in array
<select ng-model="Select4" ng-options="s.id as s.name for s in School">
<option value="">-- 请选择 --</option>
</select>
select as label: label代表的是显示的值,而select指的是当前返回值
如果当前选中的是“北京大学”, $scope.Select4=27