angluar入门学习二【应用剖析上】
2014-06-30 13:43
225 查看
在借助angularjs构建应用时,需要遵循以下的步骤
一、调用angular
1.加载angualr.js
2.使用ng-app告诉angualr管理哪一部部分的DOM,ng-app可放于大部分的标签中,并告诉浏览器借助angualr来构建这部分的web
二、加载脚本
加载脚本有两种方式:和其他js库一样,可以冲google的CDN加载脚本或者存储本地,并指定正确的路径便可
对于第一种方式
有以下优点:首先google服务器非常快,且脚本是跨应用缓存,仅需加载一次,便可供多个应用使用
三、用ng-app标识符声明angular范围
ng-pp标识符告诉angualr应管理页面上的哪一部分,用于需要构建部分的标签,如构建的是一整套的angualr,则可以如下使用:
四、模型 -视图-控制器【MVC】
在第一篇的学习中,简单的对MVC进行介绍。而在接下来部分,将依次通过一些代码片段来让我们了解到其更多的特性
【1】模型包含代表应用当前状态的数据
【2】视图显示数据
【3】控制器管理模型与视图的关系
使用对象属性或只是原型包含数据来创建模型
并通过HTML页面模版创建视图层,然后用模型中的数据进行合并,及二次解析赋值【将新的内容插入到一个存在的模版中】
其中双{{}}进行一个数据的绑定,显示结果为
You have started your journey.';
控制器是一些类活着你写的类型告知angualr那个对象或原型通过他们指定$scope对象传递到控制器填充类型
控制器部分
进行结合得到
浏览器显示结果:
You have started your journey.
ng-controller用于指定对应控制其名字【任意命名】
对于上述代码,在简单的场经常可以很好的运行,但是对于绝大数应用来说,需要创建模型对象来包含数据,这样做可以$scope对象中原型继承引起的非预期行为,而且在诸如后续中,如增加数据项等更加友好。
改良代码如下:
四、模版和数据绑定
angular应用中的模版只是那些我们从服务器加载的HTML文档或者是定义在<script>标签中的一些静态资源。而我们在模版中去定义界面,并在界面组件即HTML标签中使用angular标识符
基本的启动流程就像这样:
1. 用户请求页面
2.浏览器发出http请求,加载包含模板请求页面【index.html】
3.在angualr加载完毕后,寻找ng-app定义部分,并通过模版寻找标识符和进行数据绑定。
4.连接到服务器加载需要展示的用户数据
在上述步骤中,1-3为angular应用标准,其余步骤可选择,而这些步骤以同步或异步发生,为了提高性能,需要将一个视图数据随模版一起加载,可避免多次请求
在这里再讲多一个基于属性的标识符ng-bind,用于显示更新文本,作用等价于{{}}
<p>{{greeting}}</p>等价于<p ng-bind='greeting'></p>
在这里建议最好使用ng-bind进行一个数据绑定,虽然前者更适合我们的阅读习惯,但有可能在加载时用户看到为渲染的模版。
对于表单输入部分,这里举一个简单的例子进行分析
在上面的代码中,在我们选中以后,在someController中一个叫youCheckedIt属性值变成了true;你也可以在控制器中进行设置该属性,同样可以反馈到视图进行展示
下面再给出angular在更深层次的表单应用
这是一个计算示例,用于帮助创业者了解他们需要多少资金支持【ng-change与js中change事件作用一致,监听表单是否发生变化,一旦发生变化便触发事件】
对于这个单纯的例子,我们设置输出用户价值的10倍
在上述代码中存在一个潜在的问题,当用户在输入框输入时,只是重新计算了需要的数量,仅仅只是作为数值的更新,如果有其他输入框绑定到这个模型,便会发生错误。
这个时候,我们可以用$scope的$watch函数更新这个字段,而对于$watch()函数将再后续中进行详细讨论,这里你仅需要了解通过$watch()传递一个表达式和一个回调函数,当表达式发生变化时将调用回调函数
在这里,你需要注意的是表达式需要写在引号中,因为字符串作为angular表达式执行,表达式能做简单的运算和访问$scope中的属性。
接下来讲解如何去添加css样式
第一种直接其实和我们平时所用的方法一样,通过在标签内定义class属性,而这里需要用到指令ng-class
CSS样式部分
然后通过控制器设置disabled属性
在上述例子中,当你点击Stun时,会触发stun()函数,将isDisabled初始值false设置为true,此时页面列表就会应用上css中对应的样式。
五、src和href属性的建议
当数据绑定到一个<img>或<a>标签时,在src或者href中使用{{}}的路径不能正常运行,因为对于其他内容,浏览器是并行加载图片的,angular无法进行拦截
虽然<img>直接语法可能是这样的
然而,在应用ng-src属性,并系那个这样写模版:
与之类似,<a>标签,也应该应用ng-href
一、调用angular
1.加载angualr.js
2.使用ng-app告诉angualr管理哪一部部分的DOM,ng-app可放于大部分的标签中,并告诉浏览器借助angualr来构建这部分的web
二、加载脚本
加载脚本有两种方式:和其他js库一样,可以冲google的CDN加载脚本或者存储本地,并指定正确的路径便可
对于第一种方式
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.0.4/angular.min.js"> </script>
有以下优点:首先google服务器非常快,且脚本是跨应用缓存,仅需加载一次,便可供多个应用使用
三、用ng-app标识符声明angular范围
ng-pp标识符告诉angualr应管理页面上的哪一部分,用于需要构建部分的标签,如构建的是一整套的angualr,则可以如下使用:
<html ng-app> … </html>
四、模型 -视图-控制器【MVC】
在第一篇的学习中,简单的对MVC进行介绍。而在接下来部分,将依次通过一些代码片段来让我们了解到其更多的特性
【1】模型包含代表应用当前状态的数据
【2】视图显示数据
【3】控制器管理模型与视图的关系
使用对象属性或只是原型包含数据来创建模型
var someText = 'You have started your journey.';
并通过HTML页面模版创建视图层,然后用模型中的数据进行合并,及二次解析赋值【将新的内容插入到一个存在的模版中】
<p>{{someText}}</p>
其中双{{}}进行一个数据的绑定,显示结果为
You have started your journey.';
控制器是一些类活着你写的类型告知angualr那个对象或原型通过他们指定$scope对象传递到控制器填充类型
控制器部分
function TextController($scope) { $scope.someText = someText; }
进行结合得到
html ng-app> <body ng-controller="TextController"> <p>{{someText}}</p> <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.0.1/angular.min.js"> </script> <script> function TextController($scope) { $scope.someText = 'You have started your journey.'; } </script> </body> </html>
浏览器显示结果:
You have started your journey.
ng-controller用于指定对应控制其名字【任意命名】
对于上述代码,在简单的场经常可以很好的运行,但是对于绝大数应用来说,需要创建模型对象来包含数据,这样做可以$scope对象中原型继承引起的非预期行为,而且在诸如后续中,如增加数据项等更加友好。
改良代码如下:
var messages = {}; messages.someText = 'You have started your journey.'; function TextController($scope) { $scope.messages = messages; }
<p>{{messages.someText}}</p>
四、模版和数据绑定
angular应用中的模版只是那些我们从服务器加载的HTML文档或者是定义在<script>标签中的一些静态资源。而我们在模版中去定义界面,并在界面组件即HTML标签中使用angular标识符
基本的启动流程就像这样:
1. 用户请求页面
2.浏览器发出http请求,加载包含模板请求页面【index.html】
3.在angualr加载完毕后,寻找ng-app定义部分,并通过模版寻找标识符和进行数据绑定。
4.连接到服务器加载需要展示的用户数据
在上述步骤中,1-3为angular应用标准,其余步骤可选择,而这些步骤以同步或异步发生,为了提高性能,需要将一个视图数据随模版一起加载,可避免多次请求
在这里再讲多一个基于属性的标识符ng-bind,用于显示更新文本,作用等价于{{}}
<p>{{greeting}}</p>等价于<p ng-bind='greeting'></p>
在这里建议最好使用ng-bind进行一个数据绑定,虽然前者更适合我们的阅读习惯,但有可能在加载时用户看到为渲染的模版。
对于表单输入部分,这里举一个简单的例子进行分析
<form ng-controller="SomeController"> <input type="checkbox" ng-model="youCheckedIt"> </form>
在上面的代码中,在我们选中以后,在someController中一个叫youCheckedIt属性值变成了true;你也可以在控制器中进行设置该属性,同样可以反馈到视图进行展示
下面再给出angular在更深层次的表单应用
这是一个计算示例,用于帮助创业者了解他们需要多少资金支持【ng-change与js中change事件作用一致,监听表单是否发生变化,一旦发生变化便触发事件】
<form ng-controller="StartUpController"> Starting: <input ng-change="computeNeeded()" ng-model="funding.startingEstimate"> Recommendation: {{funding.needed}} </form>
对于这个单纯的例子,我们设置输出用户价值的10倍
function StartUpController($scope) { $scope.funding = { startingEstimate: 0 }; $scope.computeNeeded = function() { $scope.funding.needed = $scope.funding.startingEstimate * 10; }; }
在上述代码中存在一个潜在的问题,当用户在输入框输入时,只是重新计算了需要的数量,仅仅只是作为数值的更新,如果有其他输入框绑定到这个模型,便会发生错误。
这个时候,我们可以用$scope的$watch函数更新这个字段,而对于$watch()函数将再后续中进行详细讨论,这里你仅需要了解通过$watch()传递一个表达式和一个回调函数,当表达式发生变化时将调用回调函数
function StartUpController($scope) { $scope.funding = { startingEstimate: 0 }; computeNeeded = function() { $scope.funding.needed = $scope.funding.startingEstimate * 10; }; $scope.$watch('funding.startingEstimate', computeNeeded); }
在这里,你需要注意的是表达式需要写在引号中,因为字符串作为angular表达式执行,表达式能做简单的运算和访问$scope中的属性。
接下来讲解如何去添加css样式
第一种直接其实和我们平时所用的方法一样,通过在标签内定义class属性,而这里需要用到指令ng-class
CSS样式部分
.menu-disabled-true { color: gray; }
<div ng-controller='DeathrayMenuController'> <ul> <li class='menu-disabled-{{isDisabled}}' ng-click='stun()'>Stun</li> ... </ul> <div/>
然后通过控制器设置disabled属性
function DeathrayMenuController($scope) { $scope.isDisabled = false; $scope.stun = function() { // stun the target, then disable menu to allow regeneration $scope.isDisabled = 'true'; }; }
在上述例子中,当你点击Stun时,会触发stun()函数,将isDisabled初始值false设置为true,此时页面列表就会应用上css中对应的样式。
五、src和href属性的建议
当数据绑定到一个<img>或<a>标签时,在src或者href中使用{{}}的路径不能正常运行,因为对于其他内容,浏览器是并行加载图片的,angular无法进行拦截
虽然<img>直接语法可能是这样的
<img src="/images/cats/{{favoriteCat}}">
然而,在应用ng-src属性,并系那个这样写模版:
<img ng-src="/images/cats/{{favoriteCat}}">
与之类似,<a>标签,也应该应用ng-href
相关文章推荐
- angularjs入门学习【应用剖析下】
- angularjs入门学习【应用剖析中篇】
- angularjs入门学习【应用剖析中篇】
- DLL技术应用04 - 零基础入门学习Delphi47
- DLL技术应用02 - 零基础入门学习Delphi45
- flex3.6入门学习笔记之八 Alert的3种应用
- flex3.6入门学习笔记之九 ColorPicker的应用
- php入门学习知识点四 PHP正则表达式基本应用
- DLL技术应用03 - 零基础入门学习Delphi46
- DLL技术应用01 - 零基础入门学习Delphi44
- DLL技术应用01 - 零基础入门学习Delphi44
- 韩顺平_php从入门到精通_视频教程_第14讲_盒子模型经典应用②_作业布置_学习笔记_源代码图解_PPT文档整理
- XHTML入门学习教程:表格标签的应用
- SPRING.NET 1.3.2 学习2--快速入门应用示例说明
- android驱动学习入门-android应用怎么调用驱动
- DLL技术应用02 - 零基础入门学习Delphi45
- php入门学习知识点七 PHP函数的基本应用
- php入门学习知识点八 PHP中for循环基本应用之九九乘法口绝表
- flex入门学习之十三动态DataGrid 和timer应用
- 韩顺平_php从入门到精通_视频教程_第13讲_选择器使用细节_块元素和行内元素_盒子模型_盒子模型经典应用①_学习笔记_源代码图解_PPT文档整理