Angular.js 学习笔记 整理二
来源:互联网 发布:centos设置中文 编辑:程序博客网 时间:2024/05/17 06:44
一、数据相关指令(双向绑定)[/size]
ng-bind
ng-cloak 控制显示时不出现闪烁现象
ng-bind-template
ng-model = 'msg' 可以给模型传递数据事件绑定 与 js 事件相同ng-click = "函数"控制器中 $scope.函数
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>Document</title> <script type="text/javascript" src="http://cdn.static.runoob.com/libs/angular.js/1.4.6/angular.min.js"></script></head><body ng-app="app"> <ul ng-controller="ctrl"> <!-- 绑定名称 --> <li ng-bind="name"></li> <!-- 绑定数据 ng-cloak 处理数据闪烁--> <li ng-cloak>{{215465+16547*4584}}</li> <li ng-bind-template='{{name}}{{age}}'></li> </ul><script type="text/javascript"> //定义模块 var app = angular.module('app',[]); //绑定控制器 app.controller('ctrl',['$scope',function ($scope) { $scope.name='圆圆'; $scope.age='18'; }])</script></body></html>
二、事件绑定
ng-init 初始化 定值
ng-dblclick 双击
ng-blur 失去焦点
ng-mouseout 鼠标类
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>Document</title> <script type="text/javascript" src="http://cdn.static.runoob.com/libs/angular.js/1.4.6/angular.min.js"></script></head><body ng-app="app"> <ul ng-controller="ctrl"> <li> <button ng-click="single()">单击</button> </li> <li> <button ng-dblclick="double()">双击</button> </li> <li> <input type="text"> <button ng-blur="blur()">失去焦点</button> </li> <li> <button ng-mouseout="mouseout()">鼠标移除</button> </li> </ul> <script type="text/javascript"> var app = angular.module('app',[]); //绑定控制器 app.controller('ctrl',['$scope',function ($scope) { $scope.single = function { console.log('猜猜我是谁'); }; $scope.double = function () { console.log('谁啊'); } $scope.blur = function () { console.log('小猫'); } $scope.mouseout = function () { console.log('阿狗'); } }]) </script></body></html>
三、ng-switch
ng-repeat 循环ng-if 判断ng-switch => switchng-switch-when => case
<!DOCTYPE html><html><head> <title></title> <meta charset="utf-8"> <script type="text/javascript" src="http://cdn.static.runoob.com/libs/angular.js/1.4.6/angular.min.js"></script></head><body> <div ng-app="zuzhi" ng-controller="ctrl"> <h1>{{title}}</h1> <h3>{{sub_title}}</h3> <ul> <li ng-repeat="meb in mebs"> <p>{{meb.name}}</p> <p>{{meb.duty}}</p> </li> </ul> </div> <script type="text/javascript"> // 定义模块 var app = angular.module('zuzhi',[]); // 绑定控制器 app.controller('ctrl',['$scope',function($scope){ // 标题 $scope.title = "传销组织被激活"; $scope.sub_title = "成员浮现"; $scope.mebs = [ {name:"成员1", duty:"会长"}, {name:"成员2", duty:"直白哥"}, {name:"成员3", duty:"犀利哥"}, {name:"成员4", duty:"浩哥"} ] }]); </script></body></html>
四、作用域
controller 用控制器作单位来描写一个模型
$scope
全局作用域(根作用域)$rootScope =>ng-app 范围内会自动建立一个根作用域子作用域 $scope子集控制器 =+>可以访问父级的内容
<!DOCTYPE html><html><head> <title></title> <meta charset="utf-8"> <script type="text/javascript" src="http://cdn.static.runoob.com/libs/angular.js/1.4.6/angular.min.js"></script></head><body ng-app="app" ng-init="name='顺治'"> <!-- 父及控制器 --> <div ng-controller="parent"> <h1>{{name}}</h1> <!-- 子集控制器 --> <div ng-controller="child"> <h2>{{name}}</h2> </div> </div></body></html><script type="text/javascript"> // 定义模块 var app = angular.module("app",[]); // 绑定控制器 app.controller('parent',['$scope',function ($scope) { // $scope.name = "康熙"; }]); app.controller('child',["$scope",function ($scope) { $scope.name = "雍正"; }]);</script>
五、过滤器
{{中使用”|”分割 “:”添加筛选条件}}
内置过滤器: 1.currency 将数值格式格式化为货币格式 2.date 日期格式化(y年 M 月 d日 h小时 m分钟 s秒) 3.filter 过滤器给定一个满足条件的子集 4.json 将js对象转成json字符串 5.limitTo 取出字符串或数组的前几位或者后几位 6.lowercase 将文本转化为小写格式 7.uppercase 将文本转化为大写模式 // input[0].toUpperCase()首字母大写 input[0].toUpperCase()+input.slice(1); 8.number 数字化格式,可以控制小数点位数 9.orderBy 对数组进行排序 参数2可控制排序方向 " ":true/falsse
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>Document</title> <script type="text/javascript" src="http://cdn.static.runoob.com/libs/angular.js/1.4.6/angular.min.js"></script></head><body ng-app="app"> <ul ng-controller="ctrl"> <!-- 转变货币 --> <li>{{price|currency:"$"}}</li> <!-- 变成时间 --> <li>{{now|date:"yyyy/MM/dd hh:mm:ss"}}</li> <!-- 过滤内容 --> <li>{{items|filter:'h'}}</li> <!-- json数据过滤 --> <li>{{students|filter:{age:21} }}</li> <!-- json数据 --> <li>{{students|json}}</li> <!-- 取出前几位 限制+留前 -留后 --> <li>{{items|limitTo:-3}}</li> <!-- 转变为大小写 --> <li>{{str|lowercase|limitTo:3}}</li> <li>{{str|uppercase}}</li> <!-- 顺序排列 --> <li>{{students|orderBy:'-age'}}</li> <!-- 数组排序 --> <li>{{items|orderBy:'':false}}</li> </ul> <script type="text/javascript"> var app = angular.module('app',[]); app.controller('ctrl',['$scope',function ($scope) { // 价格 $scope.price = 12.8; //时间 $scope.now = new Date; $scope.items = ['html','js','css','css3','html5','jq']; //json数据 $scope.students = [ {name:"stu1",age:"18"}, {name:"stu2",age:"19"}, {name:"stu3",age:"25"}, {name:"stu4",age:"21"}, ]; // 字符串 $scope.str = "HELLOW WORLD!" $scope.str = "hello world!" //函数处理升序降序 }]) </script></body></html>
六、自定义过滤器
绑定控制器
控制器里面
$scope.str = ‘god is girl’
自定义过滤器
app.filter(‘过滤器名’,function(){
返回过滤后的值
return function(){
回调更改内容
return 更改值
}
})
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>Document</title> <script type="text/javascript" src="http://cdn.static.runoob.com/libs/angular.js/1.4.6/angular.min.js"></script></head><body ng-app="app"> <div ng-controller="ctrl"> <!-- <h3>{{name|demo}}</h3> --> <h1>{{info|capitalize}}</h1> </div> <script type="text/javascript"> var app = angular.module('app',[]); //自定义过滤器 /*app.filter('demo',function () { return function (input) { //过滤处理 return 'hello'+input; } })*/ //首字母处理 app.filter('capitalize',function () { // 返回过滤后的值 return function (input) { // console.log(input.slice(1)); // input[0].toUpperCase() 首字母大写 G // 所有首字母大写 // 1.字符串切割 "" 2.循环处理所有单个切割字符串 3.拼接 返回字符串 return input[0].toUpperCase()+input.slice(1); } }) app.controller('ctrl',['$scope',function ($scope) { $scope.name = "网易"; $scope.info = "god is a girl" }]) </script></body></html>
七、依赖注入
将一个通用的漏记或模块封装成一个对象。使用时可以最大成程度复用
使用和被使用的时候产生相互依赖关系
优点: 简化开发 节省代码 自动查找相互依赖
简单的说:就是一个模块,我可以使用你,你也可以使用我,将逻辑封装成一个对象或者函数,在使用者和被使用者相互依赖
常见的模块:
服务模块:
推断式依赖注入: 没有声明,angularjs会将函数名称当成以来名称 缺点:无法绑定数据 压缩时完全失去依赖
<body ng-app="app"> <div ng-controller="ctrl">{{name}}</div> <script type="text/javascript"> var app = angular.module('app',[]); //推断式注入 app.controller('ctrl',function ($rootscope,$http) { $http({ }); }) </script>
行内式注入: ["$scope","$http"]
<!DOCTYPE html><html><head> <title></title> <meta charset="utf-8"> <script type="text/javascript" src="http://cdn.static.runoob.com/libs/angular.js/1.4.6/angular.min.js"></script></head><body ng-app="app"> <div ng-controller="ctrl">{{name}}</div></body></html><script type="text/javascript"> var app = angular.module("app",[]); // 推断式注入 app.controller("ctrl",["$scope","$http", function(bcd,$http){ bcd.name = "我是一个依赖注入"; }])</script>[/code][size=5]八、服务[/size]内置服务 $location 找到绝对路径 $location.absUrl(); 协议 $location.protocol(); 端口号: $location.port(); 相对路径 $location.path(); 哈希值: $location.hash(); 查询的字符串 $location.search();[size=5]注:在node.js环境下运行 用npm引express express-static body-parser[/size][color=#ff0000][/color][code=html,html 代码,true]<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>Document</title> <script type="text/javascript" src="http://cdn.static.runoob.com/libs/angular.js/1.4.6/angular.min.js"></script></head><body ng-app="app"><dl ng-controller="ctrl"> <dd>{{title}}</dd> <dd>{{absUrl}}</dd> <dd>{{url}}</dd> <dd>{{host}}</dd> <dd>{{search}}</dd> <dd>{{protocol}}</dd> <dd>{{port}}</dd> <dd>{{hash}}</dd></dl> <script type="text/javascript"> var app = angular.module('app',[]); //行内注入 app.controller('ctrl',["$scope","$location",function ($scope,$location) { //内置服务 获取地址相关信息 $scope.title = "学习$location服务"; //绝对路径 $scope.absUrl = $location.absUrl(); //地址 $scope.url = $location.url(); //主机 $scope.host = $location.host(); //搜索 $scope.search= $location.search(); //协议 $scope.protocol = $location.protocol(); //端口: $scope.port=$location.port(); //哈希值 $scope.hash=$location.hash(); }]) </script></body></html>
定时器
setTimeout || setInterval
控制器绑定(“控制器名”,[“interval”,function(){interval(函数,时间);
}])
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>Document</title><script type="text/javascript" src="http://cdn.static.runoob.com/libs/angular.js/1.4.6/angular.min.js"></script></head><body ng-app="app"><div ng-controller="ctrl"> <p ng-cloak>{{now|date:"yyyy-MM-dd hh:mm:ss"}}</p> <button ng-click="stop()">stop</button> <p>{{msg}}</p></div> <script type="text/javascript"> var app = angular.module("app",[]); app.controller('ctrl',["$scope","$timeout","$interval",function ($scope,$timeout,$interval) { // $timeout只执行一次 $timeout(function () { $scope.msg = "执行一次"; },3000) //一开始没有加载问题处理 $scope.now = new Date(); //计时器 每秒更新一次 var timer = $interval(function () { $scope.now = new Date(); },1000); //停止定时器 $scope.stop = function () { //清除定时器 $interval.cancel(timer); } }]); </script></body></html>
过滤:
}])
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>Document</title> <script type="text/javascript" src="http://cdn.static.runoob.com/libs/angular.js/1.4.6/angular.min.js"></script></head><body ng-app="app"><ul ng-controller="ctrl"> <li>价格:{{}}</li> <li>大写:{{str}}</li> <li>截取:{{str1}}</li></ul> <script type="text/javascript"> var app = angular.module('app',[]);app.controller("ctrl",["$scope","$filter",function ($scope,$filter) { $scope.price = 11.11; var currency = $filter('currency') $scope.price = currency($scope.currency); $scope.str ="god is a girl"; var uppercase = $filter('uppercase'); $scope.str = uppercase($scope.uppercase); //截取 var limitTo = $filter('limitTo') ; $scope.str1 = limitTo($scope.str,3);}]) </script></body></html>
打印调试信息
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>Document</title> <script type="text/javascript" src="http://cdn.static.runoob.com/libs/angular.js/1.4.6/angular.min.js"></script></head><body ng-app="app"> <ul ng-controller="ctrl"> </ul> <script type="text/javascript"> var app = angular.module('app',[]); app.controller('ctrl',['$log',function ($log) { $log.info('普通信息'); $log.warn('警告信息'); $log.error('错误信息'); $log.log('打印信息'); $log.debug('调试信息'); }]) </script></body></html>
九.向服务器发起请求
$http({ method:请求方式(get/post), url:地址, data:{参数}, headers:请求头信息, }).success(function(data,status,headers,config){ //数据 请求状态 请求头 配置信息 }).error(function(data,status,headers,config){ }) }])
1)get请求
$http.get() ==>从后边拿数据
res.send(data);
创造一个data
1.写入json文件
2.写一些数据
返回到前端
处理
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>Document</title> <script type="text/javascript" src="http://cdn.static.runoob.com/libs/angular.js/1.4.6/angular.min.js"></script></head><body ng-app="app"> <ul ng-controller="ctrl"> <li> <button ng-click="single()">获取数据</button> </li> <!-- 应用请求下来的数据 --> <li ng-repeat="star in stars">{{star.name}}</li> </ul> <script type="text/javascript"> var app = angular.module('app',[]); app.controller('ctrl',['$scope','$http',function ($scope,$http) { //获取数据 $scope.single = function () { // 发起网络请求 $http({ //地址 url:"/user", method:"get", //请求成功 }).success(function (info) { // console.log(info); //接收数据 $scope.stars = info; //请求失败 }).error(function (err) { console.log(err); }); } }]) </script></body></html>
2)
=> 性别 年龄
$http.jsonp()
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>Document</title> <script type="text/javascript" src="http://cdn.static.runoob.com/libs/angular.js/1.4.6/angular.min.js"></script></head><body ng-app="app"> <ul ng-controller="ctrl"> <li> <button ng-click="single()">获取数据</button> </li> </ul> <script type="text/javascript"> var app = angular.module('app',[]); app.controller('ctrl',['$scope','$http',function ($scope,$http) { //获取数据 $scope.single = function () { // 发起网络请求 $http({ //地址 url:"/user", method:"post", //请求头 headers:{ "Content-Type":"application/x-www-form-urlencoded" }, //传参 data:{ age:10, name:'xiaoming' } //请求成功 }).success(function (info) { console.log(info); //请求失败 }).error(function (err) { console.log(err); }); } }]) </script></body></html>
server.js代码:
const express = require('express');const static = require('express-static');// const bodyParser = require('body-parser');var server = express();var data = [{ name: "樊胜美", age: 32}, { name: "曲筱绡", age: 26}, { name: "邱莹莹", age: 23}, { name: "安迪", age: 36},{ name: "关雎尔", age: 23}]// server.use(bodyParser.urlencoded());server.use('/user', function(req, res) { res.send(data); // console.log(req.body); res.end();})server.listen(8080);server.use(static('./www'));
- Angular.js 学习笔记 整理二
- Angular.js学习笔记(二)
- angular.js学习笔记(二)
- Angular.js 学习笔记 整理一
- angular学习笔记二
- Angular js学习知识点整理
- Angular.js学习笔记
- angular js学习笔记
- Angular.js 学习笔记
- angular.js学习笔记
- Angular JS 学习笔记
- Angular学习笔记(二)
- angular学习笔记(二)
- Angular.js学习笔记(一)
- Angular JS 学习笔记3
- Angular JS 学习笔记四
- Angular JS 学习笔记五
- angular.js学习笔记(一)
- 运行yum时出现已被锁定,PID的另一个程序正在运行的问题解决解决办法
- Http协议初探
- Linux:nginx或者Apache 每天自动分割日志文件
- Java项目导出war包
- JDBC连接Azure MySQL DB
- Angular.js 学习笔记 整理二
- 计算所汉语词法分析系统ICTCLAS 字典格式解析
- redis密码设置、访问权限控制等安全设置
- Mysql-python安装出现的问题的记录
- bzoj3105 [ CQOI2013 ] -- 博弈论+线性基+贪心
- js 删除数组中的指定元素
- Codevs1154[能量项链] 区间DP
- 解压缩
- Docker容器进入-命令行只显示-bash-4.1#