<!--<!doctype html>--> <!--<html ng-app><!–通过ng-app指令来启动AngularJS 作用是指定HTML中哪一部分归AngularJS控制–>--> <!--<head>--> <!--<meta charset="utf-8"/>--> <!--<title>Declarative CSS Animation Demonstration</title>--> <!--<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.9/angular.js"></script>--> <!--</head>--> <!--<body>--> <!--<h1>Hello {{1 + 2}}</h1><!–花括号在AngularJS中表示数据绑定,可能是单向的数据绑定也可能是某个表达式–>--> <!--<input type="text" ng-model="name" placeholder="Enter your name"><!–ng-model指令可以用于输入控件中--> <!--当用户想输入数据或者从JavaScript变量中获取值时都可以使用它。此处,我们可以让AngularJS存储用户输入的值并将它传给一个叫做name的变量–>--> <!--<h1>Hello <span ng-bind="name"></span></h1><!–ng-bind指令可以与花括号表达式互相替换,都是将name变量的值置于标签内,当值发生变化后,绑定的组件也会更新–>--> <!--</body>--> <!--</html>--> <!--自定义模块--> <!--<html ng-app="notesApp">--> <!--<head><title>Hello AngularJS</title></head>--> <!--<body>--> <!--Hello {{1+1}}nd time AngularJS--> <!--<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.9/angular.js"></script>--> <!--<script type="text/javascript">--> <!--angular.module('notesApp',[]);<!–定义了一个模块,然后让AngularJS通过ng-app指令来启动该模块–>--> <!--</script>--> <!--</body>--> <!--</html>--> <!--创建自定义控制器--> <!--AngularJS控制器的主要职责有: .从服务器获取所需数据 以生成页面UI .决定哪些数据将会呈现给用户 .一些与页面相关的逻辑,比如如何显示元素,UI中的哪些部分是可见的,它们的风格又是什么样的 .用户交互,比如响应用户单击事件以及验证文本输入框中的值 --> <!--<html ng-app="notesApp">--> <!--<head><title>Hello AngularJS</title></head>--> <!--<body ng-controller="MainCtrl as ctrl"><!–ng-controller指令可以让AngularJS通过名称创建出控制器实例,然后将它关联到DOM元素上–>--> <!--Hello {{ctrl.helloMsg}} AngularJS <br>--> <!--Hello {{ctrl.goodbyeMsg}} AngularJS--> <!--<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.9/angular.js"></script>--> <!--<script type="text/javascript">--> <!--angular.module('notesApp',[])--> <!--.controller('MainCtrl',[function () {--> <!--//此处为与控制器相关的代码--> <!--this.helloMsg='zhongguo';//通过this关键字定义的那个变量可以在HTML中访问 任何用户想看的信息或者HTML中需要用到的数据,都必须通过this关键字将它定义成控制器实例的成员变量--> <!--var goodbyeMsg='meiguo';//局部变量,无法在HTML中访问--> <!--}]);--> <!--<!–定义了一个模块,然后让AngularJS通过ng-app指令来启动该模块–>--> <!--</script>--> <!--</body>--> <!--</html>--> <!--<html ng-app="notesApp">--> <!--<head><title>Hello AngularJS</title></head>--> <!--<body ng-controller="MainCtrl as ctrl"><!–ng-controller指令可以让AngularJS通过名称创建出控制器实例,然后将它关联到DOM元素上–>--> <!--Hello {{ctrl.message}} AngularJS <br>--> <!--<button ng-click="ctrl.changeMessage()">change message</button>--> <!--Hello {{ctrl.goodbyeMsg}} AngularJS--> <!--<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.9/angular.js"></script>--> <!--<script type="text/javascript">--> <!--angular.module('notesApp',[])--> <!--.controller('MainCtrl',[function () {--> <!--//此处为与控制器相关的代码--> <!--var self=this;--> <!--self.message='hhhh';--> <!--self.changeMessage=function () {--> <!--self.message='gggg';--> <!--}--> <!--}]);--> <!--<!–定义了一个模块,然后让AngularJS通过ng-app指令来启动该模块–>--> <!--</script>--> <!--</body>--> <!--</html>--> <!--数组的操作与显示--> <!--<html ng-app="notesApp">--> <!--<head><title>Hello AngularJS</title>--> <!--<style>--> <!--.done{--> <!--background-color: green;--> <!--}--> <!--.pending{--> <!--background-color: red;--> <!--}--> <!--</style>--> <!--</head>--> <!--<body ng-controller="MainCtrl as ctrl"><!–ng-controller指令可以让AngularJS通过名称创建出控制器实例,然后将它关联到DOM元素上–>--> <!--<div ng-repeat="note in ctrl.notes" ng-class="ctrl.getNoteClass(note.done)"><!–ng-repeat 包含ng-repeat指令的那个元素将成为模板,AngularJS加载该模板并产生一份副本,然后对于ng-repeat中的每一个实例都采取相同操作--> <!--AnhularJS中该指令能够遍历数组,通过键和值来访问数组中的对象并将它们显示在HTML中--> <!--ng-class指令用于选择性地从HTML元素中添加或者删除css class。ng-class的调用方式有很多种,我们将采用定义最明确、最清晰的那种,ng-class--> <!--指令可以接收字符串或者对象作为参数。如果参数为字符串,那么直接把它作为css class名称应用到UI中,如果参数是一个对象,那么AngularJS就会--> <!--检查该对象的每一个属性以及它对应的值,根据该值是false还是true来决定到底添加还是删除css class。--> <!--–>--> <!--<span class="label">{{note.label}}</span>--> <!--<span class="assignee" ng-show="note.assignee" ng-bind="note.assignee"></span><!–AngularJS中有两条指令用于显示或隐藏HTML元素:ng-show和ng-hide。通过绑定一个布尔型的变量--> <!--AngularJS就能控制UI显示与否。在本例中,当note.assignee为true(也可以是非空字符串,非0数字,非空JS对象等)时,assignee所对应的span元素是可见的。当note对象的assingee属性为真时,--> <!--我们就能看到它所对应的span--> <!--–>--> <!--</div>--> <!--<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.9/angular.js"></script>--> <!--<script type="text/javascript">--> <!--angular.module('notesApp',[])--> <!--.controller('MainCtrl',[function () {--> <!--//此处为与控制器相关的代码--> <!--var self=this;--> <!--self.notes=[--> <!--{id:1,label:'First Note1',done:false,assignee:'Shyam'},--> <!--{id:2,label:'Second Note2',done:false},--> <!--{id:3,label:'Done Note3',done:true},--> <!--{id:4,label:'Last Note4',done:false,assignee:'Brad'},--> <!--];--> <!--self.getNoteClass=function (status) {--> <!--return{--> <!--done:status,--> <!--pending:!status--> <!--}--> <!--}--> <!--}]);--> <!--<!–定义了一个模块,然后让AngularJS通过ng-app指令来启动该模块–>--> <!--<!–值得注意的是,和ng-class类似,ng-bind、ng-show,以及大部分诸如此类的指令都是既能直接绑定变量也能调用控制器中的函数。我们既可以--> <!--直接访问变量也可以将变量作为参数传给函数,这些参数不需要花括号–>--> <!--</script>--> <!--</body>--> <!--</html>--> <!--ng-repeat的应用 作用于对象上的ng-repeat 如果ng-repeat指令作用于对象而不是数组之上,该对象所有的属性名将会以大小写敏感的字母顺序排序。详细地说,大写字母在前,然后根据字母前后顺序排列。 ng-repeat指令接受类似"variable in arrayExpression"或者"(key,value) in objectExpression"这些格式的参数。当参数为数组时,数组中的元素 根据定义的先后顺序排列。 --> <!--<html ng-app="notesApp">--> <!--<head><title>Notes App</title></head>--> <!--<body ng-controller="MainCtrl as ctrl">--> <!--<div ng-repeat="(author,note) in ctrl.notes">--> <!--<span class="label">{{note.label}}</span>--> <!--<span class="auther" ng-bind="author"></span>--> <!--</div>--> <!--<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.9/angular.js"></script>--> <!--<script type="text/javascript">--> <!--angular.module('notesApp',[])--> <!--.controller('MainCtrl',[function () {--> <!--var self=this;--> <!--self.notes={--> <!--shyam:{--> <!--id:1,--> <!--label:'First Note',--> <!--done:false--> <!--},--> <!--Misko:{--> <!--id:3,--> <!--label:'Finished Third Note',--> <!--done:true--> <!--},--> <!--brad:{--> <!--id:2,--> <!--label:'Second Note',--> <!--done:false--> <!--}--> <!--}--> <!--}])--> <!--</script>--> <!--</body>--> <!--</html>--> <!--ng-repeat中的辅助变量 ng-repeat指令也为HTML模板提供了一些通用的辅助变量来查询当前作用域中的一些常用信息 每一个以‘$’为前缀的变量都是AngularJS内置的,它可以提供当前元素的某些统计信息,包括: $first、$middle和$last都是布尔类型的变量,对应数组中的当前元素是否是第一个,还是处于中间(既非第一个也不是最后一个),或者是最后一个 $index给出了当前元素的索引值,或者说它处于数组中的第几个。 $odd和$event代表着它的索引值的奇偶性,可以用来在奇偶行上显示不同的元素风格或者其他条件判断。 --> <!--<html ng-app="notesApp">--> <!--<head><title>Notes App</title></head>--> <!--<body ng-controller="MainCtrl as ctrl">--> <!--<div ng-repeat="note in ctrl.notes">--> <!--<div>First Element:{{$first}}</div>--> <!--<div>Middle Element:{{$middle}}</div>--> <!--<div>Last Element:{{$last}}</div>--> <!--<div>Index of Element:{{$index}}</div>--> <!--<div>At Even Position:{{$even}}</div>--> <!--<div>At Odd Position:{{$odd}}</div>--> <!--<span class="label">{{note.label}}</span>--> <!--<span class="status" ng-bind="note.done"></span>--> <!--<br/><br/>--> <!--</div>--> <!--<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.9/angular.js"></script>--> <!--<script type="text/javascript">--> <!--angular.module('notesApp',[])--> <!--.controller('MainCtrl',[function () {--> <!--var self=this;--> <!--self.notes=[--> <!--{id:1,label:'First Note',done:false},--> <!--{id:2,label:'Second Note',done:false},--> <!--{id:3,label:'Done Note',done:true},--> <!--{id:4,label:'Last Note',done:false},--> <!--];--> <!--}])--> <!--</script>--> <!--</body>--> <!--</html>--> <!--根据ID判断重复性 当我们单击按钮时,第一个ng-repeat中的hashKey和DOM元素每次都会发生变化,在第二个ng-repeat中,不会计算$$hashkey,因为我们已经明白无误地告诉 AngularJS使用id属性来作为判断重复与否的唯一标识。这样一来,DOM元素可以根据对象的ID属性来进行重用(reuse)。 --> <!--<html ng-app="notesApp">--> <!--<head><title>Notes App</title></head>--> <!--<body ng-controller="MainCtrl as ctrl">--> <!--<button ng-click="ctrl.changeNotes()">Change Notes</button>--> <!--<br/>--> <!--Dom Element change every time someone clicks--> <!--<div ng-repeat="note in ctrl.notes1">--> <!--{{note.$$hashKey}}--> <!--<span class="label">{{note.label}}</span>--> <!--<span class="author" ng-bind="note.done"></span>--> <!--</div>--> <!--<br/>--> <!--DOM Elements are reused every time someone clicks--> <!--<div ng-repeat="note in ctrl.notes2 track by note.id"><!–检查重复性–>--> <!--{{note.$$hashKey}}--> <!--<span class="label">{{note.label}}</span>--> <!--<span class="author" ng-bind="note.done"></span>--> <!--</div>--> <!--<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.9/angular.js"></script>--> <!--<script type="text/javascript">--> <!--angular.module('notesApp',[])--> <!--.controller('MainCtrl',[function () {--> <!--var self=this;--> <!--var notes=[--> <!--{--> <!--id:1,--> <!--label:'First Note',--> <!--done:false,--> <!----> <!--someRandom:31431--> <!--},--> <!--{--> <!--id:2,--> <!--label:'Second Note',--> <!--done:false--> <!--},--> <!--{--> <!--id:3,--> <!--label:'Finished Third Note',--> <!--done:true--> <!--}--> <!--];--> <!--self.notes1=angular.copy(notes);--> <!--self.notes2=angular.copy(notes);--> <!--self.changeNotes=function () {--> <!--notes=[--> <!--{--> <!--id:1,--> <!--label:'Changed Note',--> <!--done:false,--> <!--someRandom:4242--> <!--},--> <!--{--> <!--id:2,--> <!--label:'Second Note',--> <!--done:false--> <!--},--> <!--{--> <!--id:3,--> <!--label:'Finished Third Note',--> <!--done:true--> <!--}--> <!--];--> <!--self.notes1=angular.copy(notes);--> <!--self.notes2=angular.copy(notes);--> <!--}--> <!--}])--> <!----> <!--</script>--> <!--</body>--> <!--</html>--> <!--跨HTML元素的ng-repeat--> <html ng-app="notesApp"> <head><title>Notes App</title></head> <body ng-controller="MainCtrl as ctrl"> <table> <tr ng-repeat-start="note in ctrl.notes"> <td>{{note.label}}</td> </tr> <tr ng-repeat-end> <td>Done:{{note.done}}</td> </tr> </table> <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.9/angular.js"></script> <script type="text/javascript"> angular.module('notesApp',[]) .controller('MainCtrl',[function () { var self=this; var notes=[ { id:1, label:'First Note', done:false, }, { id:2, label:'Second Note', done:false }, { id:3, label:'Finished Third Note', done:true } ]; }]); </script> </body> </html>
转载于:https://my.oschina.net/u/3161974/blog/1142976