[AngularJS] AngularJS系列(1) 基础篇
目录
一年前开始使用AngularJS(以后简称ng),如今ng已经出2了.虽说2已完全变样,但是1.x还是足够优秀。
什么是AngularJS?
ng是一个js框架,目前最新版本为1.5.8.
官网:https://angularjs.org/
下载:
Install-Package AngularJS.Core
npm install angular@1.5.8
为什么使用/ng特性
ng是非常少有的双向绑定框架。
特性:
- MV*
- 模块化开发
- 双向绑定
- 指令系统
Hello World
构建1个ng页面 非常容易
<!DOCTYPE html>
<html ng-app>
<head>
<title>AngularJS</title>
<script src="//cdn.bootcss.com/angular.js/1.5.8/angular.min.js"></script>
</head>
<body>
<h1>{{model}}</h1>
<input type="text" ng-model="model">
</body> </html>
这几乎是ng最简单的hello world 页面
其中
ng-app ng内置指令,标记ng管理的区域
{{model}} 则为ng的双括号插值语法,此处输出模型model的值
ng-model ng内置指令,用来绑定具体模型
内置指令
在ng中:在HTML中ng-xxx的为指令
ng中包含:
ng-app
- 指定ng管理区域
ng-init
- 初始化
ng-model
- 双向数据绑定指令
ng-bind
- 绑定数据(默认会对HTML数据转义)
ng-cloak
- 加载前隐藏,加载完显示(ng模块加载完会移出特性)
ng-repeat
- 循环遍历(每个元素作用域上有$id $index $first $last $middle $even $odd属性与item并齐)
- (key,value) in data track by $index
ng-class
- ng-class="{red:true}" 根据对象设置class
ng-show / ng-hide / ng-if
- 是否显示 / 隐藏 / 存在 (ng-if通过注释标记能还原)
ng-src / ng-href
- 防止默认请求的表达式错误
ng-switch
- 当大量判断逻辑的时候,减少ng-show等的使用
ng-checked / ng-selected / ng-readonly / ng-disabled
- 一般可用ng-model(以上4个指令不是双向绑定,可实现全选勾选框代码)
ng-change / ng-copy / ng-click / ng-dblclick / ng-focus / ng-blur / ng-submit
- ng常用事件指令
内置过滤器
为了对数据做一些常用的操作,ng定义了一些内置的过滤器
<!DOCTYPE html>
<html ng-app>
<head>
<title>AngularJS</title>
<script src="//cdn.bootcss.com/angular.js/1.5.8/angular.min.js"></script>
</head>
<body ng-init="model=10">
<h1>{{model | currency}}</h1>
<input type="text" ng-model="model">
</body>
</html>
ng-init 初始化模型数据
{{model | currency}} 的currency则为货币过滤器

- currency (货币处理)
{{num | currency : '¥'}}
- date (日期格式化,参考代码中的DATE_FORMATS)
{{date | date : 'yyyy-MM-dd hh:mm:ss EEEE'}}
- filter(匹配子串)
{{ childrenArray | filter : {name : 'i'} }} //匹配name属性中含有i的
- json(格式化json对象)
{{ jsonTest | json}}
- limitTo(限制数组长度或字符串长度)
{{ childrenArray | limitTo : 2 }} //将会显示数组中的前两项
- lowercase(小写)
- uppercase(大写)
- number(格式化数字)
- orderBy(排序)
模块化开发
在实际开发环境中,不会像上述例子中 一行js代码都不写.
在ng中,我们的代码一般在某个模块下进行开发的.
方式一:
<!DOCTYPE html>
<html ng-app="myApp">
<head>
<title>AngularJS</title>
<script src="Scripts/angular.min.js"></script>
</head>
<body ng-controller="HelloCtrl">
<h1>{{model}}</h1>
<input type="text" ng-model="model">
<script>
var app = angular.module('myApp', []);
app.controller('HelloCtrl', ['$scope', function ($scope) {
$scope.model = 'Hello World';
}]);
</script>
</body>
</html>
方式二(也可同时创建多个页面模块):
<!DOCTYPE html>
<html>
<head>
<title>AngularJS</title>
<script src="Scripts/angular.min.js"></script>
</head>
<body ng-controller="HelloCtrl">
<h1>{{model}}</h1>
<input type="text" ng-model="model">
<button type="button" ng-click="test()">Test</button>
<script>
var app = angular.module('myApp', []);
app.controller('HelloCtrl', ['$scope', function ($scope) {
$scope.model = 'Hello World';
}]);
angular.bootstrap(document, ['myApp']);//使用模块初始化页面
</script>
</body>
</html>
简单解释上面的API
angular.bootstrap()
angular.bootstrap(dom,['myApp']) 手动加载模块myApp
angular.module()
angular.module('myApp',[],cfgFn)//创建模块angular.module('myApp)//获取模块
module.run()
module.run(function(){})//相当于程序的Main方法
module.controller()
module.controller('HomeCtrl',function(){})//创建控制器module.controller('HomeCtrl',['$scope',function(scope){}])//创建控制器(推荐)
在ng中建议将业务逻辑放在controller中执行。
本文地址:http://www.cnblogs.com/neverc/p/5903257.html
[AngularJS] AngularJS系列(1) 基础篇的更多相关文章
- 从0到1用react+antd+redux搭建一个开箱即用的企业级管理后台系列(基础篇)
背景 最近因为要做一个新的管理后台项目,新公司大部分是用vue写的,技术栈这块也是想切到react上面来,所以,这次从0到1重新搭建一个react项目架子,需要考虑的东西的很多,包括目录结构.代码 ...
- 【webpack 系列】基础篇
Webpack 基础篇 基本概念 Webpack 是一个现代 JavaScript 应用程序的静态模块打包器.当 webpack 处理应用程序时,它会递归地构建一个依赖关系图,其中包含应用程序需要的每 ...
- SQL系列总结——基础篇(三)
之前的两篇文章SQL系列总结:<基础篇一>, <基础篇二>已经介绍了一些基本的数据库知识.现在让我们来从头开始构建一个数据库.到管理数据库和对象. 架构开始! 1.创建 ...
- SQL系列总结——基础篇(一)
数据库与表.列的关系其实就像是一个Excel工作薄(workbook)与Excel表格(sheet)以及表格中的列的关系一样.关系数据库中最基本的对象有3个:表.列.用户 基本的概念名词 ...
- Android自定义控件系列之基础篇
一.概述 在android开发中很多UI控件往往需要进行定制以满足应用的需要或达到更加的效果,接下来就通过一个系列来介绍自定义控件,这里更多是通过一些案例逐步去学习,本系列有一些典型的应用,掌握好了大 ...
- [一天一个进阶系列] - MyBatis基础篇
前言:一直以来,很多人都是拿来主义,只停留在会使用的阶段,从未去研究挖掘其原理,剖析本质.现在慢慢探讨一下其内幕,抛砖引玉 一.简介 1)常用的持久化框架 Hibernate:是一款Java世界中最著 ...
- Python高级网络编程系列之基础篇
一.Socket简介 1.不同电脑上的进程如何通信? 进程间通信的首要问题是如何找到目标进程,也就是操作系统是如何唯一标识一个进程的! 在一台电脑上是只通过进程号PID,但在网络中是行不通的,因为每台 ...
- sql系列(基础篇)-前言 课前补充知识
前言 课前补充知识 Number(p,s) Number(p,s):数字类型,p 表示数字的有效长度(从数字的左边第 1 位不为 0 的開始算起,直到最右边的长度.取值范围 0~38 位),s 表示数 ...
- sql系列(基础篇)-第一章 关于sysdate
第一章 主要的SQL语句 1. 查询数据库系统时间,常以server默认的格式进行显示(依据数据库的字符集而定): 注意:dual 为数据库中的虚表,隶属于管理员 sys 用户,但全部的用户都能够訪 ...
随机推荐
- vCPU估算的几个基本概念
物理CPU数量:实际服务器插槽上的CPU个数: 核:一块CPU上面能处理数据的芯片组的数量: 超线程:在一个实体芯片组中提供两个逻辑线程: 逻辑CPU数量:物理CPU数量*核*超线程(若支持超线程,该 ...
- 实战-Fluxion与wifi热点伪造、钓鱼、中间人攻击、wifi破解
原作者:PG 整理:玄魂工作室-荣杰 目录: 0x00-Fluxion是什么 0x01-Fluxion工作原理 0x02-Kali上安装fluxion 0x03-Fluxion工具使用说明+实 ...
- Etag缓存在PHP和NodeJS中的实现
HTTP 提供了许多页面缓存的方案,其中属 Etag 和 Last-Modified 应用最广.本文会先介绍 Etag 的应用场景,然后说说他在 php 和 node 中的使用. 本文地址:http: ...
- ECSHOP农行支付接口开发(含手机端)
对于ECSHOP来说,支付是以接口的形式存在的.于是: 1:首先添加接口文件 includes\modules\payment下,增加abcbank.php,代码如下: <?php /** * ...
- Android自定义View的构造函数
自定义View是Android中一个常见的需求,每个自定义的View都需要实现三个基本的构造函数,而这三个构造函数又有两种常见的写法. 第一种 每个构造函数分别调用基类的构造函数,再调用一个公共的初始 ...
- java 锁2
并发,其实是多线程才有的场景... java 多线程? 锁? 现在看来,即使已经工作了4.5年,这仍然不是一个简单的问题. 其实java 本身有提供锁的机制. 比如 Object对象的 wait .n ...
- MyBatis学习总结(七)——Mybatis缓存
一.MyBatis缓存介绍 正如大多数持久层框架一样,MyBatis 同样提供了一级缓存和二级缓存的支持 一级缓存: 基于PerpetualCache 的 HashMap本地缓存,其存储作用域为 Se ...
- fir.im Weekly - 从零开始,搭建理想的直播平台
2016年苹果发布会如期而至,新一代的 iPhone 7, Apple Watch 同时亮相,可惜大家期待的 MacBookPro.AR.VR产品并未出现.不论大家对新产品是"买买买&quo ...
- Android笔记——活动的生命周期
一.活动的重要性 掌握活动的生命周期对任何 Android 开发者来说都非常重要,当你深入理解活动的生命周期之后,就可以写出更加连贯流畅的程序,并在如何合理管理应用资源方面,你会发挥的游刃有余.你的应 ...
- tabs左右滚动
$(function () { //IdivLeft小于0,说明左边还有菜单,菜单总数大于8 //IdivLeft等于0,说明菜单总数小于8 //IdivLeft大于0,说明右边还有菜单,菜单总数大于 ...