跟我学AngularJs:AngularJs入门及第一个实例

林炳文Evankaka原创作品。转载请注明出处http://blog.csdn.net/evankaka

摘要:主要给大家介绍了AngularJs及其特性,并以3个实例来做说明。

下载地址: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/

时间: 2024-11-05 02:34:22

跟我学AngularJs:AngularJs入门及第一个实例的相关文章

ArcGIS API for JavaScript开发环境搭建及第一个实例demo

原文:ArcGIS API for JavaScript开发环境搭建及第一个实例demo ESRI公司截止到目前已经发布了最新的ArcGIS Server for JavaScript API v3.9,它提供了更为丰富而又强大的功能.     一.安装前准备 1.ArcGIS Server for JavaScript API各版本下载地址:http://support.esrichina-bj.cn/2011/0223/960.html,我们选择下载最新的"ArcGIS API for Ja

【React Native开发】React Native For Android环境配置以及第一个实例

转载请标明出处: http://blog.csdn.net/developer_jiangqq/article/details/50456967 本文出自:[江清清的博客] (一)前言 FaceBook早期开源发布了React Native For IOS,终于在2015年9月15日也发布了ReactNative for Android,虽然Android版本的项目发布比较迟,但是也没有阻挡了广大开发者的热情.可以这样讲在2015年移动平台市场上有两个方向技术研究比较火,第一种为阿里,百度,腾讯

Spring Boot入门及第一个案例

一:SpringBoot是什么 springboot是对spring的缺点进行改善和优化,约定大于配置  开箱即用  没有代码生成 也无需xml 文件配置   可以修改属性值来满足需求 1) Spring Boot使编码变简单 2) Spring Boot使配置变简单 3) Spring Boot使部署变简单 4) Spring Boot使监控变简单 二:创建第一个SpringBoot工程 1.点击File--->New--->Project... 2.输入MAVEN,组名.包名等相关参数 3

今天学的angularJS

首先引入js文件angular.min.js,引入控制器:controllers.js其中可以定义多个控制器:比如var PhoneListCtrl = ['变量','变量',function(变量,变量){//为布局中的变量赋值,比如$http.get(XXX).success(function(data){$scope.phones = data;});}];var PhoneDetailCtrl = ['$scope','$routeParams',function($scope, $ro

AngularJS快速入门指南20:快速参考

thead>tr>th, table.reference>tbody>tr>th, table.reference>tfoot>tr>th, table.reference>thead>tr>td, table.reference>tbody>tr>td, table.reference>tfoot>tr>td { padding: 8px; line-height: 1.42857143; vertic

AngularJS快速入门指南05:控制器

AngularJS控制器用来控制AngularJS applications的数据. AngularJS控制器就是普通的JavaScript对象. AngularJS控制器 AngularJS applications通过控制器进行控制. ng-controller指令定义了一个application的控制器. 一个控制器就是一个JavaScript对象,它可以通过标准的JavaScript对象构造函数来创建. <div ng-app="myApp" ng-controller=

AngularJS快速入门指南16:Bootstrap

thead>tr>th, table.reference>tbody>tr>th, table.reference>tfoot>tr>th, table.reference>thead>tr>td, table.reference>tbody>tr>td, table.reference>tfoot>tr>td { padding: 8px; line-height: 1.42857143; vertic

AngularJS快速入门指南12:模块

AngularJS模块定义了一个application. 模块是一个application中不同部分的容器. application中的所有控制器都应该属于一个模块. 带有一个控制器的模块 下面这个application("myApp")包含一个控制器("myCtrl"): <!DOCTYPE html> <html> <script src="http://ajax.googleapis.com/ajax/libs/angu

AngularJS快速入门指南10:DOM节点

AngularJS通过指令将application数据绑定到HTML DOM元素的属性上. ng-disabled指令 ng-disabled指令将AngularJS application数据绑定到HTML元素的disabled属性上. <div ng-app=""> <p> <button ng-disabled="mySwitch">Click Me!</button> </p> <p>