最近在学angular.js,按照这个教程:通俗易懂的教程
3月3日
part1 简介
- ng-app 即angular.js application,将会被angular管理
- {{ }} 数据绑定的表达式。里面可以是各种东西等等,这些都会被计算出来。比如:
- {{10 + 1}}
- {{ 1 == 2}}
- 对象:{{ {name: ‘David’, age: ‘20’}.name }}
- 数组:{{ [‘David’, ‘Pam’][0] }}
part2 module和controller
- module: 相当于main方法一样的存在,确定ng-app如何被启动,创建方法为:
1
var myApp = angular.module("myApp",[]);
此处有两个参数,第一个参数:app name,第二个参数,这个module依赖的其他module
- controller: 和mvc里的controller一样,创建方法为:
1
2
3var myController = function($scope){
$scope.message = "hello";
}
此处$scope会被自动传进来。它的作用是把数据附加在上面,然后在view(html)里面就可以用这些数据了,当然它也可以附加对象等等。
controller如何注册module:
1
myApp.controller("myController",myController);
如何使用module驱动ng-app,比如在html里
1
2
3
4
5<div ng-app = "myApp">
<div ng-controller = "myController">
{{ message }}
</div>
</div>
part3 注意点controllers
一些tips:
- html里ng-controller的名字不要拼错(会报错的)
- html里属性名拼错是不回报错的,只会不显示内容,比如{{ message }}写成了{{ messag }}
- part2所有过程可以写成一行
1
2
3
4
5var myApp = angular
.module("myApp",[])
.controller("myController",function($scope){
$scope.message = "hello";
})
part4 ng-src
使用ng-src可以保证{{…}}在被求值后再向服务器发送请求,以避免404和不必要的多次请求。
例如:将图片地址动态绑定,如果这样写1
<img src = {{ image.path }}>
会造成404报错,但图片可以显示出来。原因是当dom被解析后就会向服务器发送请求以获得有效地址,此时{{..}}的值还没有被计算出来,所以这并不是一个有效地址,所以会导致404。在{{…}}的值被计算出来后,会再次向服务器发送请求,此时已变成有效地址故图片能显示出来。
使用ng-src可以解决这个问题。写法如下:1
<img ng-src = {{image.path}}>
此时在可以保证{{…}}在被求值后再向服务器发送请求,解决上述2问题。
3月4日
part5 数据绑定的两种方式
数据绑定:view和model同时更新。
- 改变model改变view:{{para}}
- 改变view改变model:ng-model = “para”
part6 ng-repeat
例子,js里有个数组1
2
3
4var employees = [
{name:"David", age:"20"},
{name:"Jason", age:"21"}
]
html里有个表格需要显示employee信息1
2
3
4<tr ng-repeat = "e in employees">
<td>{{e.name}}</td>
<td>{{e.age}}</td>
</tr>
part7 ng-click(event)
例子:点击button触发事件1
2
3$scope.clickEvent = function(){
...
}
1 | <input type = "button" ng-click = "clickEvent"> |
part8 Filter-Format
格式:1
{{experssion | filterName : parameter}}
lowercase
1
{{user.name | lowercase}}
uppercase
1
{{user.name | uppercase}}
date
1
{{user.dateOfBirth | data : "dd/MM/yyyy"}}
number(例子中为保留两位小数)
1
{{user.salary | number:2}}
currency
1
{{user.salary | currency:"$"}}
limitTo
1
$scope.rowLimit = 3;
1 | <tr ng-repeat = "e in employees | limitTo : rowLimit"> |
part9-10 Filter-sorting
格式:1
{{experssion | orderBy : expression: reserve}}
eg.1
ng-repeat = "e in es | orderBy : 'salary' : false"
- 升序:
- false
- +salary
- 降序:
- true
- -salary
part11-12 Filter-search
eg.全局搜索1
2
3
4
5
6<input type = "test" placeholder = "search"
ng-model = "searchText"/>
<tr ng-repeat = "e in es | filter : searchTest">
...
</tr>
eg.搜索特定(比如city)1
2
3
4
5
6<input type = "test" placeholder = "search"
ng-model = "searchText.city"/>
<tr ng-repeat = "e in es | filter : searchTest">
...
</tr>
eg.精确搜索(filter后面加一个参数)1
2
3<tr ng-repeat = "e in es | filter : searchTest:true">
...
</tr>