ng-repeat:通过 in 的方式遍历数组中的每一项
将数组中的数据写到表格中
<script>
var m1 = angular.module('myApp',[]);
m1.controller('A',['$scope','$filter',function($scope,$filter){
$scope.dataList = [
{'name':'yellow','age':25,'sex':'女'},
{'name':'red','age':17,'sex':'男'},
{'name':'blue','age':19,'sex':'男'},
{'name':'pink','age':29,'sex':'女'},
{'name':'block','age':32,'sex':'男'},
{'name':'green','age':41,'sex':'女'}
];
$scope.arr = $scope.dataList;
$scope.po = function(arg){
arguments.callee['po' + arg] = !arguments.callee['po'+arg]; //点击时,进行排序
$scope.arr = $filter('orderBy')($scope.arr,arg,arguments.callee['po' + arg])
}
$scope.fn = function(){
$scope.arr = $filter('filter')($scope.dataList,$scope.val);
}
}])
</script>
<div ng-controller = 'A'>
<input type="text" ng-model = 'val'><input type="button" value="搜索" ng-click = 'fn()'>
<table>
<tr>
<th ng-click = 'po("name")'>姓名:</th>
<th ng-click = 'po("age")'>年龄:</th>
<th ng-click = 'po("sex")'>性别:</th>
</tr>
<tr ng-repeat = 'data in arr'>
<td>{{ data.name }}</td>
<td>{{ data.age }}</td>
<td>{{ data.sex }}</td>
</tr>
</table>
</div>
ng-repeat扩展:
$index 显示数据的索引,
$first 只有第一个数据显示true,其他数据显示false $last只有最后的数据显示true,其他数据显示false $middle除了第一个数据和最后一个数据显示false,中间的数据显示true
$even只有奇数行的数据显示true,其他数据显示false $odd只有偶数行的数据显示true,其他数据显示false
<div ng-controller="A">
<ul>
<li ng-repeat='data in dataList'>{{ $index / $first / $last / $middle / even / odd}}</li>
</ul>
</div>
ng-repeat扩展案例:让 li 的偶数行数据加上 active类 奇数行加上 active2类
<ul>
<li class="{{ $odd ? 'active' : 'active2'}}" ng-repeat='data in dataList'>{{ data }}</li>
</ul>
对于兄弟节点时,可以采用 ng-repeat-strat 和 ng-repeat-end
<div ng-repeat-start = 'data in dataList'>{{data}}</div>
<div>{{data}}</div>
<div ng-repeat-end>{{data}}</div>
事件指令
ng-click / dblclick :单击 / 双击
ng-mousedown / up :鼠标按下事件 / 鼠标抬起事件
ng-mouseenter / leave :鼠标移入事件 / 鼠标移出时间
ng-mousemove / over / out :鼠标移动事件 / 鼠标经过事件 / 鼠标移出事件
ng-keydown / up /press :键盘按下事件 / 键盘抬起事件 / 按下按键时事件
ng-focus / blur :焦点事件 / 失去焦点事件
ng-submit:表单提交
ng-selected :当下拉菜单被选中时触发的事件 当CheckBox被选中时,select显示就是333333
<input type="checkbox" ng-model = 'aaa'>
<select>
<option>111111</option>
<option>222222</option>
<option ng-selected = "aaa">333333</option>
<option>444444</option>
</select>
ng-change:输入框的数据发生改变时,触发事件 ng-change 需要和 ng-model 配合使用
<input type="text" ng-change = 'bbb = "hello"' ng-model = "bbb">{{bbb}}
ng-copy:复制(复制的时候触发,下面的剪切和粘贴用法一样)
<input type="text" value = 'sdfjksjfks' ng-copy = 'ccc = true'>{{ccc}}
ng-cut:剪切
ng-paste:粘贴
ng-disabled:input中禁止点击
开启一个定时器,一开始按钮禁止点击,三秒过后可以进行点击,清楚定时器的服务 $interval.cancel(定时器名称)
var m1 = angular.module('myApp',[]);
m1.controller('A',['$scope','$interval',function($scope,$interval){
var n = 3;
$scope.text = n + '秒';
$scope.isDisable = true; //禁止点击按钮
var timer = $interval(function(){
n-- ;
$scope.text = n + '秒';
if(n == 0){
$interval.cancel(timer);
$scope.text = '允许点击';
$scope.isDisable = false;
}
},1000)
}])
<div ng-controller="A">
<input type="button" value = '{{ text }}' ng-disabled = 'isDisable'>
</div>
ng-readonly:只针对输入框,按钮是不管用的,同样是禁用,和ng-disabled效果显示不同
ng-checked:选中的状态
ng-value:输入框的文字,和value用法一样,但是value的用户体验不好,当页面需要的加载的东西过多,value = {{ }},会在页面显示,所以用户的体验不是很好,一般选用 ng-value
ng-bind用法:
<div ng-bind = 'text'></div> === <div>{{ text }}</div>
ng-bind-template用法:
<div ng-bind-template = '{{ text }},{{ text }}'></div> === <div>{{ text }},{{ text }}</div>
ng-bind-html用法:
http://www.bootcdn.cn/angular.js/ 模块库
<script src="https://cdn.bootcss.com/angular.js/1.3.0-beta.13/angular-sanitize.min.js"></script>
var m1 = angular.module('myApp',['ngSanitize']); //引入插件以后,需要和模块相连
m1.controller('A',['$scope',function($scope){
$scope.text = '<h1>hello</h1>';
}])
需要引入的插件,可以去cdn上找相应的文件
<div ng-bind-html = "text"></div>
ng-cloak :解决用户体验不好问题 ,可以和ng-bind达到同样的效果,ng-cloak相当于css,没解析完毕前相当于隐藏,解析完毕后才显示
<div ng-cloak>{{text}}</div>
ng-non-bindable:不让解析
<div ng-non-bindable>{{text}}</div> 在页面上输出的就是 {{ text }},这种情况很少见,几乎不怎么用