跟我学AngularJs:AngularJs入门及第一个实例
林炳文Evankaka原创作品。转载请注明出处http://blog.csdn.net/evankaka
摘要:主要给大家介绍了AngularJs及其特性,并以3个实例来做说明。
本教程使用AngularJs版本:1.5.3
AngularJs GitHub: https://github.com/angular/angular.js/
AngularJs下载地址:https://angularjs.org/
一、AngualrJs简介
AngularJS是由谷歌开发出来的,它是为了克服HTML在构建应用上的不足而设计的。HTML是一门很好的为静态文本展示设计的声明式语言,但要构建WEB应用的话它就显得乏力了。通常,我们是通过以下技术来解决静态网页技术在构建动态应用上的不足:AngularJS使用了不同的方法,它尝试去补足HTML本身在构建应用方面的缺陷。AngularJS通过使用我们称为标识符(directives)的结构,让浏览器能够识别新的语法。例如:
(1)使用双大括号{{}}语法进行数据绑定;
(2)使用DOM控制结构来实现迭代或者隐藏DOM片段;
(3)支持表单和表单的验证;
(4)能将逻辑代码关联到相关的DOM元素上;
(5)能将HTML分组成可重用的组件。
AngularJS可以认为是一个MVC模式的框架Model-View-Controller),其中M代码scope,V代表Html展示元素,C代表Controller.你也可以将它看成是一个MVVW模式的框架(Model-View-ViewModel),其中其中M代码scope中的数据,V代表Html展示元素,VW代表scope.AngularJS和Jquery的设计思想完成不同,你不需要去冗长的代码去控制DOM元素,一些Html上的元素都和scope上的数据进行一个双向绑定,你只需要更新scope上的数据,Html自动会发生改变。同理,你如果修改html上的数据,如input上的输入值 ,对就的scope也会接收到你的改变,从而实时更新。当然,这只是它很小一部份的功能,更多的包括指令、路由、服务等,也可以大大加快开发的速度。下面来看看它有哪些特性
二、特性
1、 数据绑定
数据绑定可能是AngularJS最酷最实用的特性。它能够帮助你避免书写大量的初始代码从而节约开发时间。一个典型的web应用可能包含了80%的代码用来处理,查询和监听DOM。数据绑定使得代码更少,你可以专注于你的应用。
传统来说,当model变化了。 开发人员需要手动处理DOM元素并且将属性反映到这些变化中。这个一个双向的过程。一方面,model变化驱动了DOM中元素变化,另一方面,DOM元素的变化也会影响到Model。这个在用户互动中更加复杂,因为开发人员需要处理和解析这些互动,然后融合到一个model中,并且更新View。这是一个手动的复杂过程,当一个应用非常庞大的时候,将会是一件非常费劲的事情。
2、模板
在AngularJS中,一个模板就是一个HTML文件。但是HTML的内容扩展了,包含了很多帮助你映射model到view的内容。
HTML模板将会被浏览器解析到DOM中。DOM然后成为AngularJS编译器的输入。AngularJS将会遍历DOM模板来生成一些指导,即,directive(指令)。所有的指令都负责针对view来设置数据绑定。
我们要理解AuguarJS并不把模板当做String来操作。输入AngularJS的是DOM而非string。数据绑定是DOM变化,不是字符串的连接或者innerHTML变化。使用DOM作为输入,而不是字符串,是AngularJS区别于其它的框架的最大原因。使用DOM允许你扩展指令词汇并且可以创建你自己的指令,甚至开发可重用的组件。
3、MVC
针对客户端应用开发AngularJS吸收了传统的MVC基本原则。MVC或者Model-View-Controll设计模式针对不同的人可能意味不同的东西。AngularJS并不执行传统意义上的MVC,更接近于MVVM(Model-View-ViewModel)。其中MVC原理图可以看看下面的图片。
4、依赖注入(Dependency Injection,即DI)
AngularJS拥有内建的依赖注入子系统,可以帮助开发人员更容易的开发,理解和测试应用。
DI允许你请求你的依赖,而不是自己找寻它们。比如,我们需要一个东西,DI负责找创建并且提供给我们。
5、Directives(指令)
指令是我个人最喜欢的特性。你是不是也希望浏览器可以做点儿有意思的事情?那么AngularJS可以做到。
指令可以用来创建自定义的标签。它们可以用来装饰元素或者操作DOM属性。
三、实例讲解
(1)入门实例一
- <!DOCTYPE html>
- <html lang="en" ng-app="">
- <head>
- <meta charset="UTF-8">
- <title>AngularJS入门学习</title>
- <script type="text/javascript" src="./1.5.3/angular.min.js"></script>
- </head>
- <body>
- <p><input type="text" ng-model = "inputValue">请输入内容</p>
- <h1>您输入的内容为:{{inputValue}}</h1>
- </body>
- </html>
结果:
注意事项:
文本输入指令<input ng-model="inputValue" />绑定到一个叫inputValue的模型变量。
双大括号标记将yourname模型变量添加到问候语文本。
你不需要为该应用另外注册一个事件侦听器或添加事件处理程序!
这个页面非常简洁,如果用Jquery写,那么就得设置input框 的chang中事件,然后更新内容。这一过程比AngularJS来得繁琐多了。
(2)入门实例2
下面现来看一个带Controller层的:
- <!DOCTYPE html>
- <html lang="en" ng-app="myApp">
- <head>
- <meta charset="UTF-8">
- <title>AngularJS入门学习</title>
- <script type="text/javascript" src="./1.5.3/angular.min.js"></script>
- </head>
- <body ng-controller = "myController">
- <p><input type="text" ng-model = "inputValue">请输入内容</p>
- <h1>您输入的内容为:{{inputValue}}</h1>
- </body>
- <script type="text/javascript">
- var app = angular.module('myApp', []);//获得整个angularJS影响的html元素
- //控制器
- app.controller('myController', function($scope) {
- $scope.inputValue = "林炳文Evankaka";
- });
- </script>
- </html>
注意,ng-app="myApp",这个不能少,还有ng-controller=“”也不能少,这两个分别批明了AngularJS有效的范围和Controller层有效的范围。
效果如下:
这里因为我们设置了$scope.inputValue = "林炳文Evankaka";,所以一打开页面,input中就已自动填充 "林炳文Evankaka";
myController——控制器方法的名字和<body>标签里面的ngController指令的值相匹配。
input的数据此时与注入到我们控制器函数的作用域($scope)相关联。当应用启动之后,会有一个根作用域被创建出来,而控制器的作用域是根作用域的一个典型后继。这个控制器的作用域对所有<body ng-controller="myController">标记内部的数据绑定有效。
(3)入门实例3
接下来使用一个带有多种ng指令的实例,这时实现的功能是点击按钮一下,显示内容,再点击一个,隐藏内容
- <!DOCTYPE html>
- <html lang="en" ng-app="myApp">
- <head>
- <meta charset="UTF-8">
- <title>AngularJS入门学习</title>
- <script type="text/javascript" src="./1.5.3/angular.min.js"></script>
- </head>
- <body ng-controller = "myController">
- <button ng-click= "myClick()" ></button>
- <h1 ng-if = "!flag"> 我是林炳文Evankaka</h1>
- </body>
- <script type="text/javascript">
- var app = angular.module('myApp', []);//获得整个angularJS影响的html元素
- //控制器
- app.controller('myController', function($scope) {
- $scope.flag = false;
- $scope.myClick = function(){
- console.log($scope.flag);
- $scope.flag = !$scope.flag ;
- console.log($scope.flag);
- }
- });
- </script>
- </html>
参考文章:http://www.apjs.net/
from: http://blog.csdn.net/evankaka/article/details/51078043
跟我学AngularJs:AngularJs入门及第一个实例的更多相关文章
- ArcGIS API for JavaScript开发环境搭建及第一个实例demo
原文:ArcGIS API for JavaScript开发环境搭建及第一个实例demo ESRI公司截止到目前已经发布了最新的ArcGIS Server for JavaScript API v3. ...
- 【React Native开发】React Native For Android环境配置以及第一个实例(1)
年9月15日也公布了ReactNative for Android,尽管Android版本号的项目公布比較迟,可是也没有阻挡了广大开发人员的热情.能够这样讲在2015年移动平台市场上有两个方向技术研究 ...
- Djangoday1 入门及第一个apphelloworld
1 Django基础指令新建一个django project新建app创建数据库表,更新数据库表或字段使用开发服务器清空数据库创建超级管理员导出数据 导入数据Django 项目环境终端数据库命令行更多 ...
- Spring Boot入门及第一个案例
一:SpringBoot是什么 springboot是对spring的缺点进行改善和优化,约定大于配置 开箱即用 没有代码生成 也无需xml 文件配置 可以修改属性值来满足需求 1) Spri ...
- Mybatis入门及第一个Mybatis程序
Mybatis笔记整理 所需要的基础知识 JDBC Mysql Java基础 Maven Junit 框架:是有配置文件的.最好的方式:看官网文档 1.简介 1.1.什么是MyBatis 简介 什么是 ...
- 配置OpenGL及第一个实例
Windows环境下安装GLUT的步骤:1.将下载的压缩包解开,将得到5个文件2.在“我的电脑”中搜索“gl.h”,并找到其所在文件夹(如果是VS,则应该是其安装目录下面的“VC\PlatformSD ...
- AngularJS快速入门指南20:快速参考
thead>tr>th, table.reference>tbody>tr>th, table.reference>tfoot>tr>th, table ...
- AngularJS快速入门指南19:示例代码
本文给出的大部分示例都可以直接运行,通过点击运行按钮来查看结果,同时支持在线编辑代码. <div ng-app=""> <p>Name: <input ...
- AngularJS快速入门指南18:Application
是时候创建一个真正的AngularJS单页面应用程序了(SPA). 一个AngularJS应用程序示例 你已经了解了足够多的内容来创建第一个AngularJS应用程序: My Note Save Cl ...
随机推荐
- 【POJ】1067.取石子游戏
题解 这道题让我对SG函数有了更深刻的理解,这是道打表找规律题 我们打出来SG函数似乎是 1 2必败 3 5必败 4 7必败 6 10必败 8 13必败 哇我找到规律了-- 然而,我显然不会通项 后来 ...
- USACO 6.4 The Primes
The PrimesIOI'94 In the square below, each row, each column and the two diagonals can be read as a f ...
- slf4j logback pom
pom: <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding&g ...
- poj2524 Ubiquitous Religions(并查集)
题目链接 http://poj.org/problem?id=2524 题意 有n个学生,编号1~n,每个学生最多有1个宗教信仰,输入m组数据,每组数据包含a.b,表示同学a和同学b有相同的信仰,求在 ...
- python 关键知识点
学习资源:笨方法学习 python3 将变量传递给脚本--argv 脚本:你编写的 .py 文件. argv 参数变量(argument variable)保存着你运行 python 脚本的参数. i ...
- Win7/Win10下搭建Go语言开发环境
1 下载适合window版本的Go安装包,下载地址http://code.google.com/p/go/downloads/list 2 下载适合window本本的LiteIDE,下载后解压即可使用 ...
- jQuery记忆巩固
jQuery是由原生js写的所以说所有jQuery制作出来的效果都可以使用js做出来,jQuery出现的目的是为了优化代码,提高码代码的效率它将很多功能封装. 一.jQuery的认识 1.何为jque ...
- 【spfa】【动态规划】zoj3847 Collect Chars
转载自:http://blog.csdn.net/madaidao/article/details/42616743 Collect Chars Time Limit: 2 Seconds ...
- 自顶向下学搜索引擎——北大天网搜索引擎TSE分析及完全注释[1]寻找搜索引擎入口
转自:http://blog.csdn.net/jrckkyy/article/category/402818 由于百度博客http://hi.baidu.com/jrckkyy发表文章字数有限,以后 ...
- libuuid.so: cannot open shared object file: No such file or directory
在玩ngx-lua时候有个 resty-uuid 需要引用 libuuid.so 动态库 打印log提示信息是这样的: libuuid.so: cannot open shared object fi ...