码迷,mamicode.com
首页 > Web开发 > 详细

Angular JS笔记

时间:2015-09-23 16:30:45      阅读:316      评论:0      收藏:0      [点我收藏+]

标签:

?

1.引导程序

?

使用ng-app开始引导一个程序:标记了AngularJS应用的作用域

  1. <!doctype html>
  2. <html lang="en" ng-app>

双括号绑定表达式:

  1. <p>Nothing here {{‘yet‘ + ‘!‘}}</p>

?

2.视图和模板

?

其核心为MVC模式

原理:在AngularJS中,一个视图是模型通过HTML模板渲染之后的映射

?

HTML模板

包含ng-controller指令,和ng-repeat指令

  1. <html ng-app>
  2. <head>
  3. ??...
  4. ??<script src="lib/angular/angular.js"></script>
  5. ??<script src="js/controllers.js"></script>
  6. </head>
  7. <body ng-controller="PhoneListCtrl">
  8. ?
  9. ??<ul>
  10. ????<li ng-repeat="phone in phones">
  11. ??????{{phone.name}}
  12. ????<p>{{phone.snippet}}</p>
  13. ????</li>
  14. ??</ul>
  15. </body>
  16. </html>

ng-repeat的语法:对象变量 in 对象数组

?

模型和控制器

$scope是作用域,为根作用域的一个后继,这里使用的是按照名称的DI。

phones即模型。

  1. function PhoneListCtrl($scope) {
  2. ??$scope.phones = [
  3. ????{"name": "Nexus S",
  4. ?????"snippet": "Fast just got faster with Nexus S."},
  5. ????{"name": "Motorola XOOM? with Wi-Fi",
  6. ?????"snippet": "The Next, Next Generation tablet."},
  7. ????{"name": "MOTOROLA XOOM?",
  8. ?????"snippet": "The Next, Next Generation tablet."}
  9. ??];
  10. }

?

AngularJS的作用域理论非常重要:

  1. 一个作用域可以视作模板、模型和控制器协同工作的粘接器
  2. AngularJS使用作用域,同时还有模板中的信息,数据模型和控制器。
  3. 这些可以帮助模型和视图分离,但是他们两者确实是同步的!(绑定)任何对于模型的更改都会即时反映在视图上;任何在视图上的更改都会被立刻体现在模型中。

?

3.过滤器

?

页面上的条件过滤:

Search: <input ng-model="query">

?

  1. <ul class="phones">
  2. ????????<li ng-repeat="phone in phones | filter:query">
  3. ??????????{{phone.name}}
  4. ????????<p>{{phone.snippet}}</p>
  5. ????????</li>
  6. </ul>

?

解释:

  • 在这段代码中,用户在输入框中输入的数据名字称作query,会立刻作为列表迭代器(phone in phones | filter:query`)其过滤器的输入。当数据模型引起迭代器输入变化的时候,迭代器可以高效得更新DOM将数据模型最新的状态反映出来。
  • 使用filter过滤器:filter函数使用query的值来创建一个只包含匹配query记录的新数组。

    ngRepeat会根据filter过滤器生成的手机记录数据数组来自动更新视图。

    整个过程对于开发者来说都是透明的。

?

4.双向绑定

?

使用orderProp来作为一个模型绑定,其值被应用到过滤器之后用作排序

orderBy:orderProp:按照orderProp选择的属性来排序。

  1. <select ng-model="orderProp">
  2. ??<option value="name">Alphabetical</option>
  3. ??<option value="age">Newest</option>
  4. </select>
  5. ?
  6. ?
  7. <ul class="phones">
  8. ??<li ng-repeat="phone in phones | filter:query | orderBy:orderProp">
  9. ????{{phone.name}}
  10. ????<p>{{phone.snippet}}</p>
  11. ??</li>
  12. </ul>

?

初始化:

$scope.orderProp = ‘age‘;

?

5. XHR和依赖注入

?

DI:$开头的,一系列的对象。如:$scope, $http。

  1. function PhoneListCtrl($scope, $http) {
  2. ??$http.get(‘phones/phones.json‘).success(function(data) {
  3. ????$scope.phones = data;
  4. ??});
  5. ?
  6. ??$scope.orderProp = ‘age‘;
  7. }

?

避免压缩的DI:

  1. PhoneListCtrl.$inject = [‘$scope‘, ‘$http‘];

?

另外一种方法:

  1. var PhoneListCtrl = [‘$scope‘, ‘$http‘, function($scope, $http) { /* constructor body */ }];

?

6.链接

?

<img ng-src="{{phone.imageUrl}}">

?

7.路由和多视图

?

Angular JS笔记

标签:

原文地址:http://www.cnblogs.com/pengzhen/p/4832398.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!