AngularJs学习教程
AngularJs
- 目录
AngularJs实战一 购物车
- 本示例用的是
angularjs v1.5
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>购物车</title>
</head>
<body ng-app='shopcar'>
<div ng-controller='shopcarCtrl'>
<h1>Your Order</h1>
<div ng-repeat='item in items'>
<span>{{item.title}}</span>
<input ng-model='item.quantity' />
<span ng-bind='item.price | currency'></span>
<span ng-bind='item.price * item.quantity | currency'></span>
<button ng-click='remove($index)'>Remove</button>
<span ng-bind='$index'></span>
</div>
</div>
<script type="text/javascript" src="js/angularjs-v1.5.0.js"></script>
<script>
var app = angular.module('shopcar',[])
app.controller('shopcarCtrl',function($scope){
$scope.items = [
{title:'苹果',quantity:'2',price:'3.1'},
{title:'香蕉',quantity:'3',price:'2.1'},
{title:'橘子',quantity:'4',price:'1.1'}
]
$scope.remove = function(index){
$scope.items.splice(index,1)
}
})
</script>
</body>
</html>
- 分析
<body ng-app='shopcar'>
ng-app属性(angularjs
中是指令)就是告诉Angular页面中的哪一部分是需要接受angularjs
来管理解析的,我们放到了body
标签上就说明,body
内是受angular
来管理的<div ng-controller='shopcarCtrl'>
ng-controller 属性就是用来控制之间的所有的内容,这个就是angularjs
中的控制器,说白了就是一个javascript
方法<div ng-repeat='item in items'>
就是遍历,把这个标签下的所有的内容都遍历,这个标签就是当前这个div
<span>{{item.title}}</span>
通过{{ }} 把item.title的值绑定到span标签的innerHTML,如下的<span ng-bind='item.title'></span>
也是这个意思,但是ng-bind的好处是再网速慢的情况下不会把{{item.title}}显示出来<input ng-model='item.quantity' />
把输入框和item.quantity的值之间创建数据绑定关系<span>{{item.price | currency}}</span>
其中currency就是angular内置的一个过滤器,让item.price以美元的形式显示<button ng-click='remove($index)'></button>
ng-click则是给button
添加一个点击事件,点击的时候久会调用remove方法,$index就是ng-repeat再遍历的时候的索引,从0开始,$index也就是元素的索引细讲
ng-repeat
指令<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>ng-repeat</title>
</head>
<body ng-app='angularrepeat'>
<div ng-controller='studentsc'>
<ul>
<li ng-repeat='stu in students'>
<a href="#" ng-click='showinfo($index)'>{{stu.name}}</a>
<span>
是否是第一个:{{$first}} 是否是最后一个:{{$last}} 是否是中间的一个{{$middle}} 是否是偶数位:{{$odd}} 是否是奇数位:{{$even}}
</span>
</li>
</ul>
<span ng-bind='stuinfo'></span>
<button ng-click='insertDom()'>Add Stu</button>
</div> <script type="text/javascript" src="js/angularjs-v1.5.0.js"></script>
<script type="text/javascript">
var app = angular.module('angularrepeat',[])
app.controller('studentsc',function($scope){
$scope.students = [
{name:'liyajie1',age:12,id:1},
{name:'liyajie2',age:13,id:2},
{name:'liyajie3',age:14,id:3}
]
$scope.showinfo = function(index){
var s = $scope.students[index]
$scope.stuinfo = s.name+'---'+s.age+'---'+s.id;
}
$scope.insertDom = function(){
$scope.students.splice(1,0,{name:'liyajie4',age:14,id:4})
}
})
</script>
</body>
</html>
- 分析如上代码
- 上面的功能主要是把学生的信息都给显示出来,点击学生名字的时候下面显示对应的详细信息,点击Add Stu按钮的时候新增一个学生liyajie4
- $index:当前元素索引
number
- $first 是否是第一个
boolean
- $last 是否是最后一个
boolean
- $middle 是否是中间的一个
boolean
,如果数组是偶数个元素,则中间两个 - $even 是否是奇数位
boolean
- $odd 是否是偶数位
boolean
- $index是从0开始,其他的是从1开始算
ng-show
和ng-hide
指令说明
ng-show
为true
的时候显示,false
的时候隐藏ng-hide
则和ng-show
相反- 示例代码如下
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>显示和隐藏</title>
<style type="text/css">
.menu-disabled-true{
color:gray;
}
</style>
</head>
<body ng-app='showandhide'>
<div ng-controller='showhidectrl'>
<button ng-click='toggleMenu()'>显示或隐藏</button>
<ul ng-show='menustate'>
<li class="menu-disabled-{{isDisabled}}" ng-click="stun()">Stun</li>
<li ng-click="dis()">Dis</li>
<li ng-click="erase()">Erase</li>
</ul>
</div>
<script type="text/javascript" src="js/angularjs-v1.5.0.js"></script>
<script>
var app = angular.module('showandhide',[])
app.controller('showhidectrl',function($scope){
$scope.menustate = true;
$scope.toggleMenu = function(){
$scope.menustate = !$scope.menustate
}
$scope.isDisabled = false
$scope.stun = function(){
$scope.isDisabled = true;
} })
</script>
</body>
</html>
相对来说这个指令没什么困难
ng-class
样式指令通过上面
ng-show
的示例代码中也看到了,通过改变class
的名字来控制文字的样式,这样是很灵活的,但是当需要再模板和javascript
中使用时它就会变得无法维护,进而无法正确创建css,正式因为这个AngularJs给我们提供了ng-class
和ng-style
指令,如下是两个例子1. 在页面最上方切换错误和警告消息
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>ng-class 在页面头部显示错误或警告信息</title>
<style type="text/css">
body,div{
padding: 0;
margin: 0;
}
button{
width:80px;
padding: 5px 10px;
border:none;
border-radius:5px;
background-color:#0094ff;
}
.error{
height:50px;
text-align:center;
background-color:#ff0000;
}
.warning{
text-align:center;
height:50px;
background-color:#FF8000;
}
</style>
</head>
<body ng-app='ngclass'>
<div ng-controller='ngctrl'>
<div ng-class='{error:isError,warning:isWarning}'>{{msg}}</div>
<button ng-click='showerror()'>Error</button>
<button ng-click='showwarn()'>Warning</button>
</div>
<script type="text/javascript" src="js/angularjs-v1.5.0.js"></script>
<script>
var app = angular.module('ngclass',[])
app.controller('ngctrl',function($scope){
$scope.showerror = function(){
$scope.isError = true;
$scope.isWarning = false;
$scope.msg = '这是错误消息';
}
$scope.showwarn = function(){
$scope.isError = false;
$scope.isWarning = true;
$scope.msg = '这是警告消息';
}
})
</script>
</body>
</html>
2. 选中行后变颜色
...
AngularJs学习教程的更多相关文章
- AngularJs学习笔记--Guide教程系列文章索引
在很久很久以前,一位前辈向我推荐AngularJs.但当时我没有好好学习,仅仅是讲文档浏览了一次.后来觉醒了……于是下定决心好好理解这系列的文档,并意译出来(英文水平不足……不能说是翻译,有些实在是看 ...
- Angularjs学习---官方phonecat实例学习angularjs step0 step1
接下来一系列的文章都是学习https://docs.angularjs.org/tutorial的笔记,主要学习的angular-phonecat项目的实现,来介绍angularjs的使用. 1.下载 ...
- angularJS学习资源最全汇总
基础 官方: http://docs.angularjs.org angularjs官方网站已被墙,可看 http://www.ngnice.com/: 官方zip下载包 https://github ...
- Angularjs学习---ubuntu12.04中karma安装配置中常见的问题总结
karma启动时出现了很多问题: 1.安装karma前提条件 安装karma首先要安装nodejs,npm然后才可以安装karma.nodejs,npm的安装过程可以参考文章:Angularjs学习- ...
- [整理]AngularJS学习资源
https://angular.io/docs/js/latest/(2.0官方网站) http://www.linuxidc.com/Linux/2014-05/102139.htm(Angular ...
- Angularjs学习---ubuntu12.04中karma安装配置
Angularjs学习---ubuntu12.04中karma安装配置中常见的问题总结 karma启动时出现了很多问题: 1.安装karma前提条件 安装karma首先要安装nodejs,npm然 ...
- 【转载】图灵AngularJS入门教程
摘自图灵的AngularJS入门教程:http://www.ituring.com.cn/article/13471 感觉非常不错,所以推荐到首页一下! (一)Hello World! 开始学习Ang ...
- 《AngularJS学习整理》系列分享专栏
<AngularJS学习整理>系列分享专栏 <AngularJS学习整理>已整理成PDF文档,点击可直接下载至本地查阅https://www.webfalse.com/re ...
- AngularJS:教程
ylbtech-AngularJS:教程 1.返回顶部 1. AngularJS 教程 AngularJS 通过新的属性和表达式扩展了 HTML. AngularJS 可以构建一个单一页面应用程序(S ...
随机推荐
- Java:Object类
objcet类中涉及的多态的扩展性,由于Object是所有类的根类,所以它可以接收任意类型的数据,包括基本数据类型.因为这一特点,它可以对多态性进行扩展. 1.创建一个Demo类来判断类类型 clas ...
- C# 字符串计算表达式
C# 字符串计算表达式 string str="4+4+2.1"; 要的效果: double sum=4+4+2.1: 方案一: 动态计算表达式: 1 public class ...
- RTC系统【转】
http://blog.csdn.net/fanqipin/article/details/8089995 转自:http://www.cnblogs.com/muhuacat/p/5276306.h ...
- poj-2236 Wireless Network &&poj-1611 The Suspects && poj-2524 Ubiquitous Religions (基础并查集)
http://poj.org/problem?id=2236 由于发生了地震,有关组织组把一圈电脑一个无线网,但是由于余震的破坏,所有的电脑都被损坏,随着电脑一个个被修好,无线网也逐步恢复工作,但是由 ...
- 【HDOJ】1362 The Bermuda Triangle
1. 题目描述给定几个三角形拼成一个百慕大三角形. 2. 基本思路基本思路肯定是搜索,关键点是剪枝.(1) 若存在长度为$l$的边,则一定可以拼成长度为$k \cdot l$的三角形,则可拼成长度为$ ...
- 《OD学Sqoop》数据转换工具Sqoop
一. 第二阶段课程回顾 hadoop 2.x HDFS YARN MapReduce Zookeeper Hive 二.大数据协作框架 对日志类型的海量数据进行分析 hdfs mapreduce/hi ...
- Charles是mac的iddler抓包工具
windows下面我们经常使用 Fiddler 抓包工具进行代理等一系列操作.然而,在 Mac 下 http://en.softonic.com/s/java-se-6:mac
- 2010山东省第一届ACM程序设计竞赛
休眠了2月了 要振作起来了!!... http://acm.sdut.edu.cn/sdutoj/problem.php?action=showproblem&problemid=2155 因 ...
- 用HTML5 Canvas为网页添加动态波浪背景
查看所有代码请去Github 本文出自 “UED” 博客:http://5344794.blog.51cto.com/5334794/1430877 <!DOCTYPE html> < ...
- UVa 1626 (输出方案) Brackets sequence
正规括号序列定义为: 空序列是正规括号序列 如果S是正规括号序列,那么[S]和(S)也是正规括号序列 如果A和B都是正规括号序列,则AB也是正规括号序列 输入一个括号序列,添加尽量少的括号使之成为正规 ...