Angularjs(一)
1.什么是angular?
Angular诞生于2009年,由Misko Hevery 等人创建,后为Google所收购。是一款优秀的前端JS框架,已经被用于Google的多款产品当中。AngularJS有着诸多特性,最为核心的是:MVC(Model–view–controller ;模块化-视图-控制器).
angular的一些特性:模块化、自动化双向数据绑定、语义化标签、依赖注入等等.
2.定义控制器:
controller("控制器名字",["依赖",function(形参){
}]}
<head>
<meta charset="UTF-8">
<title>Document</title>
<style type="text/css" >
[ng-cloak]{display:none;} //使用ng-clock时要在style中引入这个属性样式,否则有时会不起作用
</style>
</head>
<body>
<ul ng-controller="controllerTest">
<li>{{name}}</li>
// 解决双花括号闪烁的方法
<li ng-bind="name"></li>
<li ng-cloak>{{name}}</li>
<li ng-bind-template="{{name}}"></li>
</ul>
<script src="public/libs/angular/angular.min.js"></script> //引入angular,js
<script>
var App = angular.module("App",[]);
// 定义控制器
App.controller("controllerTest",['$scope',function(akshfksdjhf){ //依赖的服务,把依赖的服务注入到处理函数中去
akshfksdjhf.name = "jack"
}])
</script>
3.事件
<div ng-controller="controllerTest">
<button ng-click="fclick()" ng-dbl-click="fdbclick()">单击</button>
<button ng-dblclick="fdbclick()">双击</button>
聚焦:<input type="text" name="" ng-focus = "ffocus()">
失焦:<input type="text" name="" ng-blur = "fblur()">
<button ng-mouseover = "fmouseover()">移入</button>
<button ng-mouseleave = "fmouseleave()">移出</button>
</div>
<script src="public/libs/angular/angular.min.js"></script>
<script>
var App = angular.module("App",[]);
// 定义控制器
App.controller("controllerTest",['$scope',function($scope){
// 都是往$scope这个对象上面去添加属性和方法
$scope.fclick = function (){
alert("单击")
}
$scope.fdbclick = function (){
alert("双击")
}
$scope.ffocus = function (){
alert("聚焦")
}
$scope.fblur = function (){
alert("失焦")
}
$scope.fmouseover = function (){
alert("移入")
}
$scope.fmouseleave = function (){
alert("移出")
}
}])
</script>
4.ng-init指令
ng-init指令可以初始化模块model的数据
<div ng-controller="controllerTest" ng-init="name='jack';age=40"> <h1>{{name}}</h1> //jack <h1>{{age}}</h1> //40 </div> <script src="public/libs/angular/angular.min.js"></script> <script> var App = angular.module("App",[]); // 定义控制器 App.controller("controllerTest",['$scope',function($scope){ $scope.name = "mack"; }]) </script>
5.数据绑定
<div ng-controller="controllerTest">
<ul>
<li ng-repeat="value in arr1">{{value.name}}{{value.age}}</li> <!--遍历数组 -- >
</ul>
<ul>
<li ng-repeat="val in arr2" ng-switch on="val">
<span ng-switch-when="css">{{val}}</span> <!--当val=css时显示-->
</li>
</ul>
</div>
<script src="public/libs/angular/angular.min.js"></script>
<script>
var App = angular.module("App",[]);
// 定义控制器
App.controller("controllerTest",['$scope',function($scope){
$scope.arr1 = [
{name : "jack",age : "20"},
{name : "jack1",age : "21"},
{name : "jack2",age : "22"}
];
$scope.arr2 = ["html","css","js"]
}])
</script>
6.内置过滤器
内置过滤器 9个:
1. currency (货币处理),如果不传递参数,默认是美元符
2. date (日期格式化)
3. filter(匹配子串)
4. json(格式化json对象) 跟stringify相同 没有参数
5. limitTo(限制数组长度或字符串长度)
6. lowercase(小写) 没有参数
7. uppercase(大写) 没有参数
8. number(格式化数字) [参数]
9. orderBy(排序) [name,boolean]
1 <div ng-controller="controllerTest"> 2 <ul> 3 <li>{{num1|currency:"¥"}}</li> 4 <li>{{ndate|date:"yyyy/MM/dd hh:mm:ss EEE"}}</li> 5 <li>{{arr|filter:"1" }}</li> 6 <li>{{arrobj|filter:{age:12} }}</li> 7 <li>{{arrobj|json}}</li> 8 <li>{{str|limitTo:2}}</li> 9 <li>{{num1|number:4}}</li> 10 <li>{{str|uppercase|lowercase}}</li> 11 <li>{{arrobj|orderBy:age:false }}</li> 12 <li>{{num1 |zdy}}</li> 13 </ul> 14 </div> 15 16 17 18 <script src="public/libs/angular/angular.min.js"></script> 19 <script> 20 var App = angular.module("App",[]); 21 // 定义控制器 22 23 App.controller("controllerTest",['$scope',function($scope){ 24 $scope.num1 = 456; 25 $scope.ndate = new Date(); 26 $scope.arr = ["111","128","895","54"] 27 $scope.arrobj = [ 28 {name:"jack",age:12,phone:"456789112"}, 29 {name:"jack5",age:142,phone:"456789112"}, 30 {name:"3",age:188,phone:"456789112"}, 31 ] 32 $scope.str = "hello" 33 $scope.str2 = "wwww" 34 }]) 35 App.filter("zdy",function(){ 36 return function(num1){ 37 console.log(num1) 38 return "hello" + num1; 39 } 40 }) 41 </script>

7.依赖注入
声明式依赖注入:
App.controller("controllerTest01",['$scope',function($scope){
//写在这个数组里面的称为服务,依赖了一系列的服务,当你需要用到的时候就依赖,然后注入到处理函数中去
}])
推断式依赖注入:(不推荐,影响效率)
App.controller("controllerTest01",function($scope,$http,$log){
//依赖的完整名称,系统会根据实参数进行查找
})
8.内置服务:
--定时器:$timeout,$interval
<div ng-controller="controllerTest">
<ul>
<li>{{taday}}</li>
<li>{{now|date:"yyyy/MM/dd hh:mm:ss EEE"}}</li>
</ul>
</div>
<script src="public/libs/angular/angular.min.js"></script>
<script>
var App = angular.module("App",[]);
// 定义控制器
App.controller("controllerTest",function($scope,$timeout,$interval){
$scope.taday = "你好"
$timeout (function(){
$scope.taday = "现在是什么时间?"
$interval (function(){
$scope.now = new Date()
},100)
},1000)
})
</script>
--$location
<div ng-controller="controllerTest01">
<ul>
<li>绝对路径:{{absurl}}</li>
<li>服务:{{host}}</li>
<li>查询字符串(参数):{{search}}</li>
<li>端口号:{{port}}</li>
<li>协议:{{protocol}}</li>
<li>哈希(锚点):{{hash}}</li>
</ul>
</div>
<script src="public/libs/angular/angular.min.js"></script>
<script>
var App = angular.module("App",[]);
App.controller("controllerTest01",['$scope','$location',function($scope,$location){
console.log($location)
$scope.absurl = $location.absUrl();
$scope.host = $location.host();
$scope.port = $location.port();
$scope.search = $location.search(); //对http有要求
$scope.protocol = $location.protocol();
$scope.hash = $location.hash();
}])
</script>
--$log:(对console的封装)
<script src="public/libs/angular/angular.min.js"></script>
<script>
var App = angular.module("App",[]);
App.controller("controllerTest01",['$scope','$location','$timeout','$interval',"$log",function($scope,$location,$timeout,$interval,$log){
$log.log("普通输出");
$log.warn("警告");
$log.error('错误')
$log.info("普通")
}])
</script>
--$filter:
<div ng-controller="controller01">
<ul>
<li>{{price}}</li>
<li>{{str}}</li>
<li>{{str1}}</li>
</ul>
</div>
<script src="public/libs/angular/angular.min.js"></script>
<script>
var App = angular.module("App",[]);
App.controller("controller01",['$scope','$filter',function($scope,$filter){
// $filter可以引入九种内置的过滤器,这个是过滤器的第二种用法
$scope.price = 99.99;
var currency = $filter('currency');
$scope.price = currency($scope.price);
$scope.str = "hello angular";
var uppercase = $filter('uppercase');
$scope.str = uppercase($scope.str);
$scope.str1 = $filter('limitTo')($scope.str,5)
}])
</script>
-$http:
<div ng-controller="controller01">
<ul>
</ul>
</div>
<script src="public/libs/angular/angular.min.js"></script>
<script>
var App = angular.module("App",[]);
App.controller("controller01",['$scope','$filter','$http',function($scope,$filter,$http){
// $http 本质是对ajax的封装,放到服务底下运行
// 1.5以上使用then方法,类似于promise中的then
// 1.5以下就直接使用success方法和error方法
$http({
method: 'GET',
url: './02.json',
params : { //get请求的参数
uname : 'aaaa',
age : 30
}
}).then(function(data){
console.log(data); //封装过的,该对象底下的data属性放的是数据
console.log(data.data);
},function(err){
console.log(err)
});
$http({
method : "POST",
url : "/sendData",
headers : { //post请求最好设置请求头
"content-type" : "application/x-www-form-urlencoded"
},
data : { //post请求的参数
uname : "aaa",
age : 30
}
}).then(function(data){
console.log(data)
console.log(data.data.data); //想要的后台的数据
},function(err){
console.log(err);
})
}])
</script>
--1234wu
浙公网安备 33010602011771号