一、angular 的介绍

AngularJS[1]  诞生于2009年,由Misko Hevery 等人创建,后为Google所收购。是一款优秀的前端JS框架,已经被用于Google的多款产品当中。AngularJS有着诸多特性,最为核心的是:MVC、模块化、自动化双向数据绑定、语义化标签、依赖注入等等。

AngularJS 是一个 JavaScript框架。它是一个以 JavaScript 编写的框架。它可通过 <script> 标签添加到HTML 页面。

AngularJS 通过 指令 (directive)扩展了 HTML,且通过 表达式{{}} 绑定数据到 HTML。

AngularJS 是以一个 JavaScript 文件形式发布的,可通过 script 标签添加到网页中。

库和框架的区别

类库 - 类库是一些函数的集合,它能帮助你写WEB应用。起主导作用的是你的代码,由你来决定何时使用类库。类库有:jQuery

框架 - 框架是一种特殊的、已经实现了的WEB应用,你只需要对它填充具体的业务逻辑。这里框架是起主导作用的,由它来根据具体的应用逻辑来调用你的代码。框架有:knockout、sproutcore react vue等

下载angular.js文件

http://cdn.code.baidu.com/ 百度静态资源库

https://angularjs.org/ angular 官方网站 1.x版本的网站

https://angular.io/    2.x  4.x 网站

<!DOCTYPE html>
<html lang="en" ng-app="app">
<head>
<meta charset="UTF-8" />
<title></title>
<script src="./js/angular.js"></script>
</head>
<body>
<h1>{{5+6}}</h1>
<script type="text/javascript">
var app = angular.module("app",[]);
</script>
</body>
</html>

提示:①angular当中有指令之说,ng-XX开头 ,ng代表的是angular的缩写;

②ng-app:这个指令一般是放在HTML标签这里,它暗示着整个静态页面是一个单页面应用;

这个页面当中只能有一个ng-app指令;ng-app = “app”,这个应用的名称

③var app = angular.module("app",[]);

Angular.js文件对外暴露了一个angular的对象,这个对象有一个方法叫做module(“应用的名称”,[])

数组当中第二个参数是数组,代表的是你这个应用的依赖;

④模板表达式:{{}},这里面可以写一些简单的数学运算。+ - * / 表达式 不能为变量、if、for这些不行

<!DOCTYPE html>
<html lang="en" ng-app="app">
<head>
<meta charset="UTF-8" />
<title></title>
<script src="./js/angular.js"></script>
</head>
<body>
<h1>{{6+6+6}}</h1> <div ng-controller="Mainctr as mc">
<h1>{{mc.name}}</h1>
<button ng-click="mc.add()">Add</button>
<h2>{{mc.age}}</h2>
<button ng-click="mc.minus()">minus</button>
</div>
<script type="text/javascript">
//angular对象打点module方法 应用的名称 数组暂时为空,它代表的含义是你这个应用需要的依赖的模块
var app = angular.module("app",[]);
//app对象打点使用controller函数:会创建一个控制器类 ,还有一个还有一个函数你可以认为初始化函数
app.controller("Mainctr",[function () {
this.name = "小明";
this.age = 10;
//添加方法 加的方法
this.add = function (argument) {
this.age+=10;
}
//减的方法
this.minus = function (argument) {
this.age-=10;
}
}]) </script>
</body>
</html>

提示:①返回的app对象它有一个方法叫做controller(“MainCtr”,[function(){

}]);它相当于一个类

②如果你想实例化这个类的实例必须要用  ng-controller指令:全部的指令都是嵌套在标签之中

③实例对象的时候 MainCtr as mc

④ng-click = “”;需要添加引号

总结:刚才全部的操作,你会发现,咱么根本就没有操作dom,你会发现数据发生变化,视图跟着发生变化

数据发生变化-视图发生变化

<h1>{{1+2}}</h1>
<div ng-controller="Mainctr as mainctr">
<button ng-click="mainctr.add()">add</button>
<span>{{mainctr.a}}</span>
<button ng-click="mainctr.minus()">minus</button>
<div class="box" ng-style={'width':mainctr.a+"px"}>
</div>
<span ng-style={"font-size":mainctr.a+"px"}>123</span>
</div>
<script type="text/javascript">
var app = angular.module("app",[]);
//声明一个控制器的一个类
app.controller("Mainctr",[function (argument) {
this.a = 10;
//添加ADD方法
this.add = function (argument) {
this.a +=10;
}
//添加一个减的方法
this.minus = function (argument) {
this.a-=10;
}
}])
</script>

提示:玩的是‘数据’。ng-style可以设置样式,但是需要注意的是value是一个JSON

数据的双向绑定

<div ng-controller="MainCtr as mainctr">
<h4>{{mainctr.a}}</h4>
<!-- 数据的双向绑定 -->
<input type="text" ng-model="mainctr.a">
<!-- 是否购买保险 -->
<p>
是否买保险:<input type="checkbox" ng-model="mainctr.b">
{{mainctr.b?"买保险":"滚蛋"}}
</p>
<!-- 性别 -->
<p>
<input type="radio" value="男" ng-model="mainctr.sex">男
<input type="radio" value="女" ng-model="mainctr.sex">女
<input type="radio" value="未知" ng-model="mainctr.sex">未知
<span>{{mainctr.sex}}</span>
</p>
<!-- range条 -->
<p>
<input type="range" min="0" max="255" ng-model="mainctr.range"/>
{{mainctr.range}}
</p>
</div>
<script type="text/javascript">
var app = angular.module("app",[]);
app.controller("MainCtr",[function (argument) {
this.a =123;
this.b = true;
this.sex = "未知";
this.range = 20;
}]);
</script>

提示:数据的双向绑定是通过ng-model进行数据的双向的绑定;

调色板

<!DOCTYPE html>
<html lang="en" ng-app="app">
<head>
<meta charset="UTF-8" />
<title></title>
<script src="./js/angular.js"></script>
<style type="text/css">
.box{
position: relative;
width: 200px;
height: 200px;
background:pink;
}
</style>
</head>
<body>
<div ng-controller="MainCtr as mainctr">
<div class="box" ng-style="mainctr.getRGBA()"> </div>
<p>
<input type="range" min="0" max="255" ng-model="mainctr.R">
<span>{{mainctr.R}}</span>
</p>
<p>
<input type="range" min="0" max="255" ng-model="mainctr.G">
<span>{{mainctr.G}}</span>
</p>
<p>
<input type="range" min="0" max="255" ng-model="mainctr.B">
<span>{{mainctr.B}}</span>
</p>
<p>
<input type="range" min="0" max="255" ng-model="mainctr.A">
<span>{{mainctr.A}}</span>
</p>
</div>
<script type="text/javascript">
var app = angular.module("app",[]);
app.controller("MainCtr",[function (argument) {
//双向绑定的数据RGBA
this.R = 0;
this.G = 0;
this.B = 0;
this.A = 0.5; //添加一个RGBA的方法
this.getRGBA = function (argument) {
return {"background":"rgba("+this.R+','+this.G+','+this.B+','+this.A+")"}
}
}]);
</script>
</body>
</html>

微博的发布框

<!DOCTYPE html>
<html lang="en" ng-app="app">
<head>
<meta charset="UTF-8" />
<title></title>
<script src="./js/angular.js"></script>
<style type="text/css">
.waring{
color:red;
}
</style>
</head>
<body>
<div ng-controller="MainCtr as mainctr">
<textarea rows="20" cols="20" ng-model="mainctr.content"> </textarea>
<p>
共<span ng-class="{'waring':mainctr.content.length>=140}">{{mainctr.content.length}}</span>/140个字
<button ng-disabled="mainctr.content.length>=140">发布</button>
<button ng-disabled="mainctr.content.length==0" ng-click="mainctr.clear()">清空</button>
</p>
</div>
<script type="text/javascript">
var app = angular.module("app",[]);
app.controller("MainCtr",[function (argument) {
this.content = "";
this.clear = function (argument) {
this.content = "";
}
}]);
</script>
</body>
</html>

ng-repeat循环

概述:在angular当中标签部分,可以用ng-repeat你可以认为是for循环;

<!DOCTYPE html>
<html lang="en" ng-app = "app">
<head>
<meta charset="UTF-8" />
<title></title>
<script src="./js/angular.js"></script>
</head>
<body>
<div ng-controller="Mainctr as mainctr">
<ul ng-repeat="item in mainctr.hobby">
<li>{{item.name}}</li>
</ul>
</div>
<script type="text/javascript">
var app = angular.module("app",[]); app.controller("Mainctr",[function (argument) {
this.hobby = [{"name":"小明"},{"name":"大明"},{"name":"老明"}];
}]);
</script>
</body>
</html>

小小学生管理系统

<!DOCTYPE html>
<html lang="en" ng-app = "app">
<head>
<meta charset="UTF-8" />
<title></title>
<script src="./js/angular.js"></script>
<style type="text/css"> table,tr,td{
border:1px solid black;
border-collapse:collapse;
}
tr:nth-child(2n){
color:purple;
}
.addStudent{
position: fixed;
top: 0;
right: 10px;
}
</style>
</head>
<body>
<div ng-controller="Mainctr as mainctr">
<div>
<table>
<tr>
<td>学号</td>
<td>姓名</td>
<td>年龄</td>
<td>性别</td>
<td>删除</td>
</tr>
<tr ng-repeat="item in mainctr.students track by $index">
<!-- 学号 -->
<td>
<span ng-dblclick="item.isShow=true" ng-show="!item.isShow">{{item.id}}</span>
<input type="text" ng-show="item.isShow" ng-blur="item.isShow=false" ng-model="item.id">
</td>
<!-- 姓名 -->
<td>
<span ng-dblclick="item.ShowName=true" ng-show="!item.ShowName">{{item.name}}</span>
<input type="text" ng-show="item.ShowName" ng-blur="item.ShowName=false" ng-model="item.name">
</td>
<!-- 年龄 -->
<td>
<span ng-dblclick="item.ShowAge=true" ng-show="!item.ShowAge">{{item.age}}</span>
<input type="text" ng-show="item.ShowAge" ng-blur="item.ShowAge=false" ng-model="item.age">
</td>
<!-- 性别 -->
<td>
<span ng-dblclick="item.ShowSex=true" ng-show="!item.ShowSex">{{item.sex}}</span>
<input type="text" ng-show="item.ShowSex" ng-blur="item.ShowSex=false" ng-model="item.sex">
</td>
<td ng-click="mainctr.remove(item.id)">删除</td>
</tr>
</table>
</div>
<!-- 下面是添加学生的布局 -->
<div class="addStudent">
<p>
学号:<input type="text" name="" ng-model ="mainctr.formData.id">
</p>
<p>
姓名:<input type="text" name="" ng-model ="mainctr.formData.name">
</p>
<p>
年龄:<input type="text" name="" ng-model ="mainctr.formData.age">
</p>
<p>
性别:<input type="text" name="" ng-model ="mainctr.formData.sex">
</p>
<p>
<button ng-click = "mainctr.addStudent()">添加学生</button>
</p>
</div>
</div>
<script type="text/javascript">
var app = angular.module("app",[]); app.controller("Mainctr",[function (argument) {
this.students = [
{"id":0,"name":"贾成豪","age":18,"sex":"男"},
{"id":1,"name":"小青","age":38,"sex":"女"},
{"id":2,"name":"刘铭","age":28,"sex":"男"},
{"id":3,"name":"小猪","age":68,"sex":"男"}
]; //数据的双向绑定
this.formData = {
"id":"",
"name":"",
"age":"",
"sex":""
}
//添加学生
this.addStudent = function (argument) {
this.students.push(this.formData);
}
//删除的方法
this.remove = function (id) {
var i = 0;
while(i<this.students.length){ if(this.students[i].id==id){
this.students.splice(i,1);
}
i++;
}
}
}]);
</script>
</body>
</html>

node(6)angular介绍的更多相关文章

  1. Node.js简单介绍并实现一个简单的Web MVC框架

    编号:1018时间:2016年6月13日16:06:41功能:Node.js简单介绍并实现一个简单的Web MVC框架URL :https://cnodejs.org/topic/4f16442cca ...

  2. Node.js && Angular && TypeScript 环境安装与更新

    安装 Node.js 下载并安装Node.js Angular 执行命令 npm install -g @angular/cli 参考资料: angular quickstart TypeScript ...

  3. Node.js NPM 介绍

    章节 Node.js NPM 介绍 Node.js NPM 作用 Node.js NPM 包(Package) Node.js NPM 管理包 Node.js NPM Package.json NPM ...

  4. Node.js 基础介绍

    什么是Node.js 官网介绍: Node.js® is a JavaScript runtime built on Chrome's V8 JavaScript engine. Node.js us ...

  5. Node.js 基础介绍(一)

    Node.js 学习笔记一) 简单介绍--名称 Node.js,平时听到有好几种叫法,node .Node.js.nodejs ,但是比较正式的称呼还是"Node.js",由于它是 ...

  6. 不会几个框架,都不好意思说搞过前端: Node.js & angular.js

    Node.js  菜鸟教程 :http://www.runoob.com/nodejs/nodejs-install-setup.html angular.js  菜鸟教程 :http://www.r ...

  7. node.js 的介绍

    1.node.js是什么? (1)node.js不是一门编程语言, 是一个开发平台,就像Java开发平台,Net平台,PHP开发平台,Apple开发平台.(何为开发平台?有对应的编程语言,有语言运行时 ...

  8. Angular介绍

    Angulay介绍 1.介绍:是一个用于Html和TypeScript构建客户端应用平台与框架.Angular 本身就是用 TypeScript 写成的.基本构造块是 NgModule,它为组件提供了 ...

  9. Node.Js —— PM2介绍

    pm2 是一个带有负载均衡功能的Node应用的进程管理器.当你要把你的独立代码利用全部的服务器上的所有CPU,并保证进程永远都活着,0秒的重载, PM2是完美的.它非常适合IaaS结构,但不要把它用于 ...

随机推荐

  1. linux下mysql主从复制搭建

    目标:搭建两台MySQL服务器,一台作为主服务器,一台作为从服务器,实现主从复制 环境: 主数据库: 192.168.1.1 从数据库: 192.168.1.2 mysql安装可参考:https:// ...

  2. Java之BigDecimal

    转载请注明源出处:http://www.cnblogs.com/lighten/p/6963836.html 1.前言 编程人员都应该知道计算机计算浮点数是不精确的,结果是近似数值,当然具体值还是和计 ...

  3. Linq基础知识小记三

    1.子查询 Linq中的子查询思想和Sql中的子查询其实差不多, 对于方法语法,一个子查询包含在另一个子查询的Lambda表达式中,代码如下: string[] names = { "Jam ...

  4. Android输入控件EditText和软键盘监听

    1. 跳转到新的页面自动软键盘显示情况: 在配置清单文件AndroidManifest.xml文件,对Activity的windowSoftInputMode属性进行设置. stateUnspecif ...

  5. predefClass中包含的符号

    Scope[ ||(boolean,boolean), &&(boolean,boolean), !=(int,int), !=(long,long), !=(float,float) ...

  6. nginx pcre错误

    以上错误是因为pcre的路径指定的不对,--with-pcre模块应该指向的是pcre解压后的源码包,而不是pcre的安装路径. ]$./configure --prefix=/data01/logs ...

  7. springboot-19-整合dubbox

    springboot 整合dubbox 1, 没了,,, 2, 安装zookeeper 可见: http://www.cnblogs.com/wenbronk/p/6636926.html 2.1 下 ...

  8. Mongodb同步数据到hive(二)

    Mongodb同步数据到hive(二) 1.            概述 上一篇文章主要介绍了mongodb-based,通过直连mongodb的方式进行数据映射来进行数据查询,但是那种方式会对线上的 ...

  9. Git 什么时候用什么指令

    转自:http://blog.gogojimmy.net/2012/02/29/git-scenario/ Git 教學(1):Git的基本使用 Git 教學(2):Git Branch 的操作與基本 ...

  10. highcharts绘制股票k线

    借助highcharts绘制股票k线: 后台通过websocket没个一定时间下发最新数据,然后重新绘制k线; 开发文档: https://api.highcharts.com/highcharts/ ...