python就業班day29----vue的ES6語法
阿新 • • 發佈:2018-12-13
例:todolist
<!DOCTYPE html>
<html>
<head>
<mtea charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
<script src="js/vue.min.js"> </script>
<style>
.list_con {
width: 600px;
margin: 50px auto 0;
}
.inputtxt {
width: 550px;
height: 30px;
border: 1px solid #ccc;
padding: 0px;
text-indent: 10px;
}
.inputbtn {
width: 40px;
height: 32px;
padding: 0px;
border: 1px solid #ccc;
}
.list {
margin: 0;
padding: 0;
list-style: none;
margin-top: 20px;
}
.list li {
height: 40px;
line-height : 40px;
border-bottom: 1px solid #ccc;
}
.list li span {
float: left;
}
.list li a {
float: right;
text-decoration: none;
margin: 0 10px;
}
</style>
</head>
<body>
<div class="list_con">
<h2>TO DO LIST</h2>
<input type="text" name="" id="txt1" class="inputtxt" v-model="content">
<input type="button" name="" id="btn1" value="增加" class="inputbtn" @click="addData()">
<ul id="list" class="list">
<!--實時更新,事件!!-->
<!-- v-for是事件,實時監聽,v-if和v-method都是事件 -->
<li>
<span>{{item}}</span>
<a href="javascript:" class="up" @click="upData(index)">↑</a>
<a href="javascript:" class="down" @click="downData(index)">↓</a>
<a href="javascript:" class="del" @click=delData(index)>刪除</a>
</li>
</ul>
</div>
<script>
new Vue({
el:".list_con",
data:{
content:"",
items:[學習"html",學習"css",學習"JavaScript"],
temp:"",
},
methods:{
addData:function(){
if (this.content == ""){
alert("輸入內容不能為空");
return;
}
else{
this.items.push("學習"+this.content);
}
},
delData:function(index){
alert("del...data");
this.items.splice(index,1);
},
upData:function(index){
alert("up...data");
if(index == 0){
alert("我到頂了");
}
else{
this.temp = this.items[index - 1];
this.items.splice(index - 1 , 1 , this.items[index]);
this.items.splice(index,1,this.temp);
}
},
downData:function(){
if(index = this.items.length - 1){
alert("我到底了");
}
else{
this.temp = this.items[index + 1];
this.items.splice(index + 1, 1 , this.items[index]);
this.items.splice(index, 1 , this.temp);
}
}
}
})
</script>
</body>
</html>
vue區域性過濾器:
寫在filter裡面,呼叫{{陣列 | 過濾器函式}}
new Vue({
el:{},
filters:{ // 注意s
過濾器函式:function(形參){ // 形參是系統傳入的,指的是你寫|前的變數(以資料型別的名字當形參而已)
操作形參...
...
}
}
})
Vue全域性過濾器:Vue.filter() // 沒有s 注意:只有被掛載了Vue的(有el:"過濾器"選中的)才能使用全域性過濾器,沒有的不能使用 引數1:過濾器名稱 引數2過濾器方法體 Vue.filter(“引數1”,function(形參){ // 這個形參跟上面的形參一樣 操作形參 … })
<body>
<div id="app">
<div>原始陣列:{{ [1,2,3,4,5] }}</div>
<div>陣列偶數:{{ [1,2,3,4,5] | getOuShu}}</div>
<div>陣列去重app1:{{ [1,2,3,4,5,1,2,34,5] | quChong }}</div>
</div>
<hr>
<div id="app2">
<div>陣列去重app2:{{ [1,2,3,4,5,1,2,34,5] | quChong}}</div>
</div>
<script>
// 定義全域性過濾器,去除陣列中重複的內容
// 引數1:過濾器名稱,引數2:過濾器方法體
Vue.filter(
"quChong",function(array){
var newArray = [];
for(var i=0;i<array.length;i++){
if(newArray.indexOf(array[i]) == -1){
newArray.push(array[i]);
}
}
return newArray;
}
)
new Vue({
el:"#app",
data:{},
methods:{},
computed:{},
filters:{
// 寫在vue物件裡面的過濾器,是一個區域性過濾器
getOuShu:function(array){
var newArray = [];
for(var i=0; i < array.length; i++){
if(array[i] % 2 == 0){
newArray.push(array[i]);
}
}
return newArray;
}
},
});
new Vue({
el:"#app2",
data:{}
})
</script>
</body>
例項生命週期: 每個Vue建立時都要經歷一系列過程。在這個過程會自動執行這些鉤子函式,我們可以使用這些鉤子函式實現特定的功能
鉤子函式: beforeCreate:vue例項建立之前執行 created:vue例項建立之後執行 beforeMount:el掛載之前被呼叫 mounted:vue物件的ready方法,類似於document.ready beforeUpdate:資料發生變化之前 Updated:資料發生變化之前
<script>
new Vue({
el:"#app",
data:{
number:10,
}
// 生命週期的鉤子方法
// 在data和vue物件繫結之前呼叫
beforeCreate:function(){
console.log("beforeCreate");
},
// 在data和vue物件繫結之後呼叫
created:function(){
console.log("created");
},
// 在el管理的頁面和vue物件關聯之前
beforeMount:function(){
console.log("beforeMount");
},
// 在管理的頁面和vue物件關聯之後
mounted:function(){
console.log("mounted");
},
// 當data中的資料變化之前
beforeUpdate:function(){
console.log("beforeUpdate");
},
// 當data中的資料變化之後
update:function(){
console.log("Updated");
},
})
</script>
滑鼠選中,Alt+方向鍵,可以挪動一段程式碼
例:鉤子方法:
== 要想處理網路請求,需要配合axios.js,寫在mounted裡面
axios({
url:"index_data",
method:"get", // 類似type
})
.axios.then(function(resp){ // 成功的回撥函式
console.log(resp);
})
.axios.catch(function(error){ // 失敗的回撥函式
console.log(error);
})
ES6:2015年出的,最新版本的javascript,在ES5上增加了一些語法 變數宣告:let和const,沒有預解析,var有預解析
<script>
// 定義變數:var,let,const
console.log(num1); // undefined
// console.log(num2) // 沒有預解析
// console.log(num3) // 沒有預解析
var num1 = 10;
let num2 = 20;
const num3 = 30; // 使用const定義的常量,不能改變
num1 = 11;
num2 = 21;
// num3 = 31;
console.log(num1);
console.log(num2);
</script>
箭頭函式:es6語法
<script>
// 普通函式
function getSum(a,b){
return a + b;
}
console.log(getSum(10,20))
// 匿名函式
var getSum = function(a , b){
return a + b;
}
console.log(getSum( 10 , 20 ));
// 箭頭函式,有兩個引數的
var getSum = ( a , b ) => {
return a + b;
}
console.log(getSum(10,20))
// 箭頭函式,有一個引數的,括號可省略
var square = a => {
return a * a;
}
console.log(square(20));
// 箭頭函式,沒有引數的,不能省略括號
var test = () =>{
return "hahaha";
}
console.log(test());
</script>
物件的簡寫:es6簡寫,如果key變數和value變數名稱一樣,可以省略
<script>
// 定義物件的普通方式
var person = {
name:"張三",
age:13,
study:function(
console.log(this.name + "學習葵花寶典");
)
}
person.study();
// es6簡寫:如果key變數和value的變數名稱一樣,可以省略
var name = "張三";
var age = 13;
var person2 = {
name,
age,
study():{
console.log(this.name + "正在學習葵花寶典");
}
}
person2.study();
</script>