刚开始接触时老是去wiki或各类百科以了解一番。
它们会告诉我一些MVVM、双向数据绑定、依赖注入等等名词,以为这些名词好上档次,而后我极可能就不打算用这个东西了。javascript
AngularJS是什么?php
彻底使用 JavaScript编写的客户端技术。同其余历史悠久的 Web技术( HTML、 CSS 和JavaScript)配合使用,使Web应用开发比以往更简单、更快捷。html
不考虑那些名词,本篇帮助你快速了解AngularJS的基本用法。java
感谢 @myqianlan 菊苣提醒,本文用的AngularJS版本为1.2.x,1.3.x中再也不用本文中提到的方式声明controller。git
先从这段开始:angularjs
<div ng-app="" data-ng-init="name='Kavlez'"> <p>Name: <input type="text" ng-model="name"></p> <p ng-bind="name"></p> {{name}} {{6+8}} </div>
AngularJS的指令都是以ng
开头,或者也可使用data-ng
开头。 AngularJS的表达式用两个大括号表示:{{expression}}
这即是AngularJS最基本的功能:数据绑定。ajax
咱们能够对各类类型进行绑定并显示:express
Numberapi
<div ng-app="" ng-init="quantity=1;cost=5"> <p>Total : ¥{{ quantity * cost }}</p> </div>
String数组
<div ng-app="" ng-init="firstName='Kavlez';lastName='Jin'"> <p>The name is {{ firstName + " " + lastName }}</p> </div>
Object
<div ng-app="" ng-init="person={firstName:'Kavlez',lastName:'Jin'}"> <p>The name is {{ person.lastName }}</p> </div>
Array
PS: 可使用ng-repeat
进行迭代
<div ng-app="" ng-init="myArr=[0,2,4,6,8]"> <p ng-repeat="element in myArr"> {{ element }} </p> </div>
咱们用controller对一个AngularJS应用进行控制。
用ng-controller
定义一个controller,声明全部被它包含的元素都属于这个控制器。
例如:
<div ng-app="" ng-controller="personController"> <h1>{{ person.name +' is a(an) '+person.job }}</h1> <h1>{{ person.sayHi() }}</h1> </div> <script> function personController($scope) { $scope.person = []; $scope.person.name='Kavlez' $scope.person.job='brogrammer' $scope.person.sayHi = function(){ return "Hi! I'm "+ $scope.person.name + ", I'm a(an) " + $scope.person.job; } } </script>
固然,咱们应该使用更高效的组织方式。
AngularJS支持将Controller定义在其余js文件中,好比上面的例子能够改成:
<div ng-app="" ng-controller="personController"> <h1>{{ person.name +' is a(an) '+person.job }}</h1> </div> <script type="text/javascript" src="js/app.js"></script>
到目前为止,定义一个Angular app都用ng-app=""
的方式。
可行,可是这个app下的变量和函数都是global的,并且会形成controller污染(pollute)。
而一般,咱们用module把app组织起来。 咱们能够经过ng-app="名称"
或angular.modele()
来声明一个module。
该方法有两个参数:
好比,以前的例子能够改成:
<div ng-app="myApp" ng-controller="fighterController"> <script> var myApp = angular.module("myApp",[]); myApp.controller("fighterController", function($scope) { //.. } </script> </div>
若是将app和controller放到两个文件分别定义,则:
<div ng-app="myApp" ng-controller="fighterController"> <script src="myApp.js"></script> <script src="myAppControllers.js"></script> </div>
myApp.js:
var myApp = angular.module("myApp",[]);
myAppControllers.js:
myApp.controller("fighterController", function($scope) { //.. }
这个东西能够加在表达式里面,改变表达式的输出格式。
咱们能够用如下Filters:
Filter | Description |
---|---|
uppercase | 转大写 |
lowercase | 转小写 |
currency | 转货币格式 |
orderBy | 按指定属性排序 |
filter | 按指定关键字进行过滤 |
前3种能够直接用在表达式中,好比:
{{name | uppercase}} {{name | lowercase}} {{total | currency}}
filter和orderBy一般用于数组:
<div ng-app="" ng-controller="fighterController"> <input ng-model="search"/> <ul> <li ng-repeat="f in fighters|filter:search"> {{ f }} </li> </ul> <script> function fighterController($scope) { $scope.fighters = [ {name:'Ryu',country:'Japan'}, {name:'Ken',country:'USA'}, {name:'Chun Li',country:'China'}, {name:'GuiLe',country:'USA'}, {name:'Zangief',country:'Russia'} ]; } </script> </div>
固然,数据不会这样放在一个controller里。
咱们能够经过$http
来请求数据并进行绑定。
上面的例子能够改成:
function fighterController($scope,$http) { var url = '请求地址'; $http.get(url).success(function(response) { $scope.fighters = response; }) }