【練習】angularJs練習(tab欄切換、待辦事項、$http)

1.tab欄切換(ng-click、ng-switch on、ng-switch-when、ng-class)

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
<style>
.current{
background: red;
}
</style>
</head>
<body ng-app="app">
<div ng-controller="controller">
<nav>
<!-- ng-class="{類名:布爾值}" true時添加這個類名,false不添加這個類名;此時的type表示$scope.type -->
<a href="#" ng-click="switch('local')" ng-class="{current:'local'==type}">國內新聞</a>
<a href="#" ng-click="switch('global')" ng-class="{current:'global'==type}">國際新聞</a>
<a href="#" ng-click="switch('sport')" ng-class="{current:'sport'==type}">體育新聞</a>
</nav>
<!-- 這個type指的是$scope.type -->
<div ng-switch on="type">
<!-- 當ng-switch on和ng-switch-when中對應的數據一樣時,纔會顯示 -->
<div ng-switch-when="local">國內新聞國內新聞國內新聞國內新聞</div>
<div ng-switch-when="global">國際新聞國際新聞國際新聞國際新聞</div>
<div ng-switch-when="sport">體育新聞體育新聞體育新聞體育新聞</div>
</div>
</div>
<script src="angularjs/angularjs.js"></script>
<script>
var app=angular.module("app",[]);
app.controller("controller",["$scope",function($scope){
$scope.switch=function(type){
$scope.type=type;
}
}]);
</script>
</body>

</html>

2.待辦事項:在輸入框輸入事項,添加到未完成事項中;點擊事項表示已完成添加到已完成事項中

(ng-submit、ng-model雙向數據綁定、ng-repeat循環、ng-checked、ng-click、截取數組方法splice)

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
</head>
<body ng-app="app">
<div ng-controller="controller">
<!-- 添加事項 -->
<div>
<!-- input框輸入事項後,回車就將數據傳入model,這個事件用form表單中的submit事件 -->
<!-- add函數裏面傳不傳name都可以,因爲name此時已經是$scope.name雙向數據綁定,在model直接使用$scope.name即可 -->
<!-- <form action="" ng-submit="add(name)"> -->
<form action="" ng-submit="add()">
<input type="text" ng-model="name"></form>
<div>
<ul>
<!-- 循環寫在要循環創建的標籤上 -->
<!-- 點擊input後會完成該事項 -->
<li  ng-repeat="(key,todo) in todos">
<!-- 點擊事件要把key傳過去,因爲你點擊的哪一個得告訴 model,model再把這個數據添加到已完成 -->
<input type="checkbox" ng-checked="todo.flag" ng-click="finish(key)">
<label for="">{{todo.name}}</label>
</input>
<!-- 和上面input點擊事件一樣,要傳個key來表示你刪除的是哪一個 -->
<button ng-click="delete(key)">刪除</button>
</li>


<!-- 上下兩個一個用cheakbox一個就直接顯示,都要添加點擊事件,一點擊就代表已完成,把這個添加到已完成 -->
<!-- <li ng-repeat="(key,todo) in todos" ng-click="finish(key)">
{{todo.name}}
</li> -->
</ul>
</div>
</div>
<!-- 已完成事項 -->
<div>
<h5>已完成</h5>
<ul>
<li  ng-repeat="(key,val) in dones">
<!-- 點擊事件要把key傳過去,因爲你點擊的哪一個得告訴 model,model再把這個數據添加到已完成 -->
<input type="checkbox" ng-checked="val.flag">
<label for="">{{val.name}}</label>
</input>
</li>
</ul>
</div>
</div>
<script src="angularjs/angularjs.js"></script>
<script>
var app=angular.module("app",[]);
app.controller("controller",["$scope",function($scope){
// 待辦事項是一個數組,每次add就給裏面增加內容
$scope.todos=[];
$scope.add=function(){
$scope.todos.push({"name":$scope.name,"flag":false});
// 添加完之後清空input中的數據
$scope.name="";
}
// 已完成數組
$scope.dones=[];
$scope.finish=function(key){
// 待辦事項數組中要把這個key值數據刪掉並添加進已完成數組,用splice,用過之後返回值還是一個數組,裏面只有一個數據,所以要取【0】
$scope.done=$scope.todos.splice(key,1)[0];
$scope.dones.push({"name":$scope.done.name,"flag":true});
}
$scope.delete=function(key){
// 刪除數據
$scope.todos.splice(key,1);
}
}])
</script>
</body>

</html>

3.$http

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
</head>
<body ng-app="app">
<div ng-controller="controller">

</div>
<script src="angularjs/angularjs.js"></script>
<script>
var app=angular.module("app",[]);
app.controller("controller",["$scope","$http",function($scope,$http){


$http({
url: 'example.php',
// 這是get請求方式:傳遞參數必須用params,會把name=itcast添加到url後面,數據是query string parameters格式(key=value的格式)
// method:"get",
// params:{
// "name":"itcast"
// }
// 這是post請求方式:傳遞參數必須用data,且angularjs不會把對象形式的參數轉換成name=itcast,(get直接就是這個格式),所以傳入的一定要是這個格式。數據是form data格式
method: 'post',
headers: {'Content-Type': 'application/x-www-form-urlencoded'},
data: 'name="itcast"'  // post 傳參
}).success(function (info) {
console.log(info);
});
}]);
</script>
</body>

</html>

4.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章