模板和数据的基本运作流程如下:
用户请求应用起始页面
用户的浏览器向服务器发起一次http连接,然后加载index.html页面,这个页面包含了模板
angular被加载到页面中,等待页面加载完成,查找ng-app指令,用来定义模板的边界
angular遍历模板,查找指定和绑定关系,将触发一些列动作:注册监听器、执行一些DOM操作、从服务器获取初始化数据。最后,应用将会启动起来,并将模板转换成DOM视图
连接到服务器去加载需要展示给用户的其他数据
显示文本
一种使用{{}}形式,如{{greeting}} 第二种ng-bind="greeting"
使用第一种,未被渲染的页面可能会被用户看到,index页面建议使用第二种,其余的页面可以使用第一种
表单输入
<html ng-app> <head> <title>表单</title> <script type="text/javascript" src="angular.min.js"></script> <script type="text/javascript"> function StartUpController($scope) { $scope.funding = {startingEstimate:0}; computeNeeded = function() { $scope.funding.needed = $scope.funding.startingEstimate * 10; }; $scope.$watch('funding.startingEstimate',computeNeeded); //watch model的变化 } </script> </head> <body> <form ng-controller="StartUpController"> Starting: <input ng-change="computeNeeded()" ng-model="funding.startingEstimate"> //change的时候调用函数 Recommendation: {{funding.needed}} </form> </body> </html>
在某些情况下,我们不想一有变化就立刻做出动作,而是要进行等待。例如:
<html ng-app> <head> <title>表单</title> <script type="text/javascript" src="angular.min.js"></script> <script type="text/javascript"> function StartUpController($scope) { $scope.funding = {startingEstimate:0}; computeNeeded = function() { $scope.funding.needed = $scope.funding.startingEstimate * 10; }; $scope.$watch('funding.startingEstimate',computeNeeded);//watch监视一个表达式,当这个表达式发生变化时就会调用一个回调函数 $scope.requestFunding = function() { window.alert("Sorry,please get more customers first.") }; } </script> </head> <body> <form ng-submit="requestFunding()" ng-controller="StartUpController"> //ng-submit Starting: <input ng-change="computeNeeded()" ng-model="funding.startingEstimate"> Recommendation: {{funding.needed}} <button>Fund my startup!</button> </form> </body> </html>
非表单提交型的交互,以click为例
<html ng-app> <head> <title>表单</title> <script type="text/javascript" src="angular.min.js"></script> <script type="text/javascript"> function StartUpController($scope) { $scope.funding = {startingEstimate:0}; computeNeeded = function() { $scope.funding.needed = $scope.funding.startingEstimate * 10; }; $scope.$watch('funding.startingEstimate',computeNeeded); $scope.requestFunding = function() { window.alert("Sorry,please get more customers first.") }; $scope.reset = function() { $scope.funding.startingEstimate = 0; }; } </script> </head> <body> <form ng-controller="StartUpController"> Starting: <input ng-change="computeNeeded()" ng-model="funding.startingEstimate"> Recommendation: {{funding.needed}} <button ng-click="requestFunding()">Fund my startup!</button> <button ng-click="reset()">Reset</button> </form> </body> </html>
列表、表格以及其他迭代型元素
ng-repeat会通过$index返回当前引用的元素序号。 示例代码如下:
<html ng-app> <head> <title>表单</title> <script type="text/javascript" src="angular.min.js"></script> <script type="text/javascript"> var students = [{name:'Mary',score:10},{name:'Jerry',score:20},{name:'Jack',score:30}] function StudentListController($scope) { $scope.students = students;} </script> </head> <body> <table ng-controller="StudentListController"> <tr ng-repeat='student in students'> <td>{{$index+1}}</td> <td>{{student.name}}</td> <td>{{student.score}}</td> </tr> </table> </body> </html>
隐藏与显示
ng-show和ng-hide功能是等价的,但是运行效果正好相反。
<html ng-app> <head> <script type="text/javascript" src="angular.min.js"></script> <script> function DeathrayMenuController($scope) { $scope.menuState = {show:false };//这里换成menuState.show = false 效果就显示不出来了。以后声明变量还是放在{}里面吧 $scope.toggleMenu = function() { $scope.menuState.show = !$scope.menuState.show; }; } </script> </head> <body> <div ng-controller='DeathrayMenuController'> <button ng-click='toggleMenu()'>Toggle Menu</button> <ul ng-show='menuState.show'> <li ng-click='stun()'>Stun</li> <li ng-click='disintegrate()'>Disintegrate</li> <li ng-click='erase()'>Erase from history</li> </ul> </div> </body> </html>
css类和样式
ng-class和ng-style都可以接受一个表达式,表达式执行的结果可能是如下取值之一:
表示css类名的字符串,以空格分隔
css类名数组
css类名到布尔值的映射
代码示例如下:
<html ng-app> <head> <style type="text/css"> .error { background-color: red; } .warning { background-color: yellow; } </style> <script type="text/javascript" src="angular.min.js"></script> <script> function HeaderController($scope) { $scope.isError = false; $scope.isWarning = false;$scope.showError = function() { $scope.messageText = "Error!!!!" $scope.isError = true; $scope.isWarning = false; }
$scope.showWarning = function() { $scope.messageText = "Warning!!!" $scope.isWarning = true; $scope.isError = true; } } </script> </head> <body> <div ng-controller="HeaderController"> <div ng-class="{error:isError,warning:isWarning}">{{messageText}}</div> <button ng-click="showError()">Error</button> <button ng-click="showWarning()">Warning</button> </div> </body> </html>
css类名到布尔值的映射
示例代码如下:
<html ng-app> <head> <style type="text/css"> .selected { background-color: lightgreen; } </style> <script type="text/javascript" src="angular.min.js"></script> <script> function Restaurant($scope) { $scope.list = [{name:"The Handsome",cuisine:"BBQ"},{name:"Green",cuisine:"Salads"},{name:"House",cuisine:'Seafood'}];$scope.selectRestaurant = function(row) { $scope.selectedRow = row; } } </script> </head> <body> <table ng-controller="Restaurant"> <tr ng-repeat='restaurant in list' ng-click='selectRestaurant($index)' ng-class='{selected: $index==selectedRow}'> //css类名到布尔值的映射,当模型属性selectedRow的值等于ng-repeat中得$index时,selectd样式就会被设置到那一行 <td>{{restaurant.name}}</td> <td>{{restaurant.cuisine}}</td> </tr> </table> </body> </html>
本文向大家介绍AngularJS语法详解(续),包括了AngularJS语法详解(续)的使用技巧和注意事项,需要的朋友参考一下 src和href属性 Angularjs中src应写成ng-src,href应写成ng-href 例如: 表达式 在模板中可以进行简单的数学运算、比较运算、布尔运算、位运算、引用数组、和对象符号等 尽管我们可以使用表达式做很多事情,但是表达式是使用一个自定义的解释器来执行
本文向大家介绍AngularJS Module方法详解,包括了AngularJS Module方法详解的使用技巧和注意事项,需要的朋友参考一下 AngularJS是什么? AngularJs(后面就简称ng了)是一个用于设计动态web应用的结构框架。首先,它是一个框架,不是类库,是像EXT一样提供一整套方案用于设计web应用。它不仅仅是一个javascript框架,因为它的核心其实是对HTML标签
本文向大家介绍AngularJS中transclude用法详解,包括了AngularJS中transclude用法详解的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了AngularJS中transclude用法。分享给大家供大家参考,具体如下: Transclude - 在Angular的指令中,大家会看到有一个这样的一个配置属性,这个单词在英文字典里面也查询不到真实的意思,所以就用英文来
6.4.2 Xacro_语法详解 xacro 提供了可编程接口,类似于计算机语言,包括变量声明调用、函数声明与调用等语法实现。在使用 xacro 生成 urdf 时,根标签robot中必须包含命名空间声明:xmlns:xacro="http://wiki.ros.org/xacro" 1.属性与算数运算 用于封装 URDF 中的一些字段,比如: PAI 值,小车的尺寸,轮子半径 .... 属性定义
6.3 URDF语法详解 URDF 文件是一个标准的 XML 文件,在 ROS 中预定义了一系列的标签用于描述机器人模型,机器人模型可能较为复杂,但是 ROS 的 URDF 中机器人的组成却是较为简单,可以主要简化为两部分:连杆(link标签) 与 关节(joint标签),接下来我们就通过案例了解一下 URDF 中的不同标签: robot 根标签,类似于 launch文件中的launch标签 li
本文向大家介绍C语言函数语法详解,包括了C语言函数语法详解的使用技巧和注意事项,需要的朋友参考一下 1、概述 在C语言中,函数是来完成子程序或者某个模块的功能。有主程序或者其他函数调用,其他函数之间可以相互调用。同一函数可以被一个或多个函数任意次调用。 注意: a、一个C程序有一个或多个程序模块组成,每一个程序模块作为一个源程序文件。一个源文件可以为多个C程序共用。