AngularJS入门教程之Hello World!


Posted in Javascript onDecember 06, 2014

开始学习AngularJS的一个好方法是创建经典应用程序“Hello World!”:

1.使用您喜爱的文本编辑器,创建一个HTML文件,例如:helloworld.html。
2.将下面的源代码复制到您的HTML文件。
3.在web浏览器中打开这个HTML文件。

源代码:

<!doctype html>

<html ng-app>

    <head>

        <script src="http://code.angularjs.org/angular-1.0.1.min.js"></script>

    </head>

    <body>

        Hello {{'World'}}!

    </body>

</html>

请在您的浏览器中运行以上代码查看效果。

现在让我们仔细看看代码,看看到底怎么回事。 当加载该页时,标记ng-app告诉AngularJS处理整个HTML页并引导应用:

<html ng-app>

这行载入AngularJS脚本:

<script src="http://code.angularjs.org/angular-1.0.1.min.js"></script>

(想了解AngularJS处理整个HTML页的细节,请看Bootstrap。)

最后,标签中的正文是应用的模板,在UI中显示我们的问候语:

Hello {{'World'}}!

注意,使用双大括号标记{{}}的内容是问候语中绑定的表达式,这个表达式是一个简单的字符串‘World'。

下面,让我们看一个更有趣的例子:使用AngularJS对我们的问候语文本绑定一个动态表达式。

Hello AngularJS World!

本示例演示AngularJS的双向数据绑定(bi-directional data binding):

1.编辑前面创建的helloworld.html文档。
2.将下面的源代码复制到您的HTML文件。
3.刷新浏览器窗口。

源代码:

<!doctype html>

<html ng-app>

    <head>

        <script src="http://code.angularjs.org/angular-1.0.1.min.js"></script>

    </head>

    <body>

        Your name: <input type="text" ng-model="yourname" placeholder="World">

        <hr>

        Hello {{yourname || 'World'}}!

    </body>

</html>

请在您的浏览器中运行以上代码查看效果。

该示例有一下几点重要的注意事项:

1.文本输入指令<input ng-model="yourname" />绑定到一个叫yourname的模型变量。
2.双大括号标记将yourname模型变量添加到问候语文本。
3.你不需要为该应用另外注册一个事件侦听器或添加事件处理程序!

现在试着在输入框中键入您的名称,您键入的名称将立即更新显示在问候语中。 这就是AngularJS双向数据绑定的概念。 输入框的任何更改会立即反映到模型变量(一个方向),模型变量的任何更改都会立即反映到问候语文本中(另一方向)。

AngularJS应用的解析

本节描述AngularJS应用程序的三个组成部分,并解释它们如何映射到模型-视图-控制器设计模式:

模板(Templates)

模板是您用HTML和CSS编写的文件,展现应用的视图。 您可给HTML添加新的元素、属性标记,作为AngularJS编译器的指令。 AngularJS编译器是完全可扩展的,这意味着通过AngularJS您可以在HTML中构建您自己的HTML标记!

应用程序逻辑(Logic)和行为(Behavior)

应用程序逻辑和行为是您用JavaScript定义的控制器。AngularJS与标准AJAX应用程序不同,您不需要另外编写侦听器或DOM控制器,因为它们已经内置到AngularJS中了。这些功能使您的应用程序逻辑很容易编写、测试、维护和理解。

模型数据(Data)

模型是从AngularJS作用域对象的属性引申的。模型中的数据可能是Javascript对象、数组或基本类型,这都不重要,重要的是,他们都属于AngularJS作用域对象。

AngularJS通过作用域来保持数据模型与视图界面UI的双向同步。一旦模型状态发生改变,AngularJS会立即刷新反映在视图界面中,反之亦然。

此外,AngularJS还提供了一些非常有用的服务特性:

1.底层服务包括依赖注入,XHR、缓存、URL路由和浏览器抽象服务。
2.您还可以扩展和添加自己特定的应用服务。
3.这些服务可以让您非常方便的编写WEB应用。

Javascript 相关文章推荐
JAVASCRIPT 对象的创建与使用
Mar 09 Javascript
jQuery Selector选择器小结
May 06 Javascript
JS页面延迟执行一些方法(整理)
Nov 11 Javascript
checkbox全选所涉及到的知识点介绍
Dec 31 Javascript
jQuery实现固定在网页顶部的菜单效果代码
Sep 02 Javascript
Javascript 两种刷新方法以及区别和适用范围
Jan 17 Javascript
Vue.js 中的 $watch使用方法
May 25 Javascript
mint-ui 时间插件使用及获取选择值的方法
Feb 09 Javascript
微信小程序云开发之云函数详解
May 16 Javascript
小程序实现短信登录倒计时
Jul 12 Javascript
layui 弹出层值回传解决方式
Nov 14 Javascript
JS常用排序方法实例代码解析
Mar 03 Javascript
JavaScript中的Web worker多线程API研究
Dec 06 #Javascript
JavaScript实现的一个日期格式化函数分享
Dec 06 #Javascript
JavaScript实现twitter puddles算法实例
Dec 06 #Javascript
JavaScript实现的一个计算数字步数的算法分享
Dec 06 #Javascript
angularjs中的e2e测试实例
Dec 06 #Javascript
angularjs中的单元测试实例
Dec 06 #Javascript
angularjs指令中的compile与link函数详解
Dec 06 #Javascript
You might like
967 个函式
2006/10/09 PHP
PHP和JAVA中的重载(overload)和覆盖(override) 介绍
2012/03/01 PHP
WordPress中注册菜单与调用菜单的方法详解
2015/12/18 PHP
thinkphp实现163、QQ邮箱收发邮件的方法
2015/12/18 PHP
Jquery下:nth-child(an+b)的使用注意
2011/05/28 Javascript
纯CSS3代码实现滑动开关效果
2015/08/19 Javascript
javascript日期处理函数,性能优化批处理
2015/09/06 Javascript
微信小程序 wx.request(object) API详解及实例代码
2016/09/30 Javascript
十大热门的JavaScript框架和库
2017/03/21 Javascript
jQuery remove()过滤被删除的元素(推荐)
2017/07/18 jQuery
Vue中的ref作用详解(实现DOM的联动操作)
2017/08/21 Javascript
Vue网页html转换PDF(最低兼容ie10)的思路详解
2017/08/24 Javascript
微信小程序出现wx.navigateTo页面不跳转问题的解决方法
2017/12/26 Javascript
JS异步执行结果获取的3种解决方式
2019/02/19 Javascript
JS highcharts动态柱状图原理及实现
2020/10/16 Javascript
[02:44]DOTA2英雄基础教程 魅惑魔女
2014/01/07 DOTA
[47:12]TFT vs Secret Supermajor小组赛C组 BO3 第三场 6.3
2018/06/04 DOTA
如何解决django配置settings时遇到Could not import settings 'conf.local'
2014/11/18 Python
Python实现简单的代理服务器
2015/07/25 Python
Python爬虫实例爬取网站搞笑段子
2017/11/08 Python
python实现k-means聚类算法
2018/02/23 Python
python 实现分页显示从es中获取的数据方法
2018/12/26 Python
python-opencv 将连续图片写成视频格式的方法
2019/01/08 Python
python实现处理mysql结果输出方式
2020/04/09 Python
HTML5梦幻之旅——炫丽的流星雨效果实现过程
2013/08/06 HTML / CSS
Linux内核产生并发的原因
2012/07/13 面试题
会计大学生职业生涯规划书范文
2014/01/13 职场文书
优秀教师先进事迹
2014/01/22 职场文书
车间主任岗位职责
2014/03/16 职场文书
工作检讨书怎么写
2015/01/23 职场文书
晚会闭幕词
2015/01/28 职场文书
预备党员介绍人意见
2015/06/01 职场文书
Java Optional<Foo>转换成List<Bar>的实例方法
2021/06/20 Java/Android
常用的MongoDB查询语句的示例代码
2021/07/25 MongoDB
电脑关机速度很慢怎么办 提升电脑关机速度设置教程
2022/04/08 数码科技
MySQL transaction事务安全示例讲解
2022/06/21 MySQL