1. 程式人生 > >“vue學習筆記&購物車的實現”

“vue學習筆記&購物車的實現”

“vue學習筆記”

學習網站:1.https://cn.vuejs.org/v2/guide/
2. http://www.runoob.com/vue2/vue-tutorial.html

  1. 下載vue.js
    方法1:http://unpkg.com/[email protected]/dist/vue.js
    方法2:gitup下載
    2.入門操作:
<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>Document</title>
<!--引入vue.js --> <script src="../vue.js"></script> </head> <body> <!-- vue的容器 --> <div id="app"> <!-- 通過mustache語法展示 --> {{msg}} </div> <script> // 例項化vue var app=new Vue({ el:'#app',//相當於document.getElementById('app'); data:{//核心資料放置位置
msg:'Hellow,Vue' } }) </script> </body> </html> 3.vue的幾種常用語句 v-text;v-html;v-show;v-on;v-bind;v-if;v-for;v-model;v-once;v-pre;v-cloak; 1) v-text: 需要繫結在html標籤上,以v-開頭,“v”代表vue ,text代表文字 2) v-html :更新內部的innerHTML,但需要注意:v-html會把一些標籤元素內容data資料,暴露給外部,會造成一些XSS攻擊,在渲染賬號密碼等隱私資料時請不要採用這種方式 3
) v-show :表示通過資料的true&false,來控制標籤的顯示隱藏。 4) v-on :通過事件監聽來實現相應的操作功能 "v-on" ==>可簡寫為@ 5) v-bind:表示繫結標籤的屬性內容 v-bind==>':' 6) v-if表示條件判斷,當條件滿足時,自動執行v-if內容,否則執行v-else的內容。 // 注意: // 1.當v-if滿足時,v-else內容不被渲染 // 2.v-if&v-else之間不能有其他語句,除非它是v-else-if // 3.v-show 只是簡單的控制display:none&display:block,它的原理就是把所有標籤渲染成功之後,通過css來操作顯示隱藏 // v-if 屬於條件判斷語句,當條件滿足渲染某一個頁面標籤,否則直接不渲染 // 選取原則: // 當擁有頻繁的tab切換時,建議你使用v-show // 當你有較高的渲染需求時,為了節省你的初始渲染開銷,建議你使用v-if // 4.一個迴圈體內應該包含至少有一個v-if,至多有一個v-else,可以含有多個v-else-if. 7) v-for:可以繫結陣列的資料來渲染一個專案列表: 8) v-model:用於實現表單空間的資料雙向繫結//限制範圍為:input textarea ,select 9) v-once:只被用來載入那些初始渲染頁面需要載入一次的資料,之後不再更改,可以用於優化頁面載入。 10) v-pre: 11) v-cloak: //購物車程式碼 <!DOCTYPE html> <html lang="en"> <head> <meta 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> <link rel="stylesheet" href="https://cdn.bootcss.com/bootstrap/4.0.0/css/bootstrap.min.css" integrity="sha384-Gn5384xqQ1aoWXA+058RXPxPg6fy4IWvTNh0E263XmFcJlSAwiGgFAW/dAiS6JXm" crossorigin="anonymous"> <script src="./vue.js"></script> </head> <body> <div id="app"> <div class="container"> <table class="table"> <thead> <tr> <th class="text-center"> 全選 <input type="checkbox" v-model="allSelected" @click="selecteAll(allSelected)"> </th> <th class="text-center">商品</th> <th class="text-center">數量</th> <th class="text-center">單價()</th> <th class="text-center">金額()</th> <th class="text-center">操作</th> </tr> </thead> <tbody> <tr v-for="(item,index) in items" :key="index"> <th class="text-center"> <input type="checkbox" v-model="item.selected"> </th> <td class="text-center">{{item.name}}</td> <td class="text-center"> <button @click="item.quanlity<=0?item.quanlity=0:item.quanlity--">-</button> <input type="number" v-model.number="item.quanlity" style="width:100px;text-align:center;"> <button @click="item.quanlity>=20?item.quanlity=20:item.quanlity++">+</button> </td> <td class="text-center">{{item.price}}</td> <td class="text-center">{{item.price*item.quanlity}}</td> <td class="text-center"> <template v-if="index%2==0"> <button type="button" class="btn btn-primary" @click="del(index)">Delete</button> </template> <template v-if="index%2==1"> <button type="button" class="btn btn-warning" @click="del(index)">Delete</button> </template> </td> </tr> <tr> <td colspan="2" class="text-center"> <button type="button" class="btn btn-danger" @click="delSelected">刪除所選商品</button> </td> <td colspan="2" class="text-center">商品總件數(){{TotalNum}}</td> <td colspan="2" class="text-center">商品總金額(){{TotalPrice}}</td> </tr> </tbody> </table> </div> </div> <script> var app = new Vue({ el:'#app', data:{ items:[ {selected:true,name:'iphone5',quanlity:3,price:1000}, {selected:false,name:'iphone6',quanlity:6,price:2000}, {selected:false,name:'iphone7',quanlity:4,price:3000}, {selected:true,name:'iphone8',quanlity:3,price:4000}, {selected:true,name:'iphoneX',quanlity:8,price:5000} ] }, computed:{ allSelected:{ get(){ return this.items.every((item,index)=>{ return item.selected }) }, set(){} }, TotalNum(){ return this.items.filter((item,index)=>{ return item.selected }).length }, TotalPrice(){ var selectedItems = this.items.filter((item,index)=>{ return item.selected }) // console.log(selectedItems) return selectedItems.reduce((sum,item)=>{ return sum+item.quanlity*item.price },0) } }, methods:{ del(index){ this.items.splice(index,1) }, selecteAll(value){ //1.當全選未勾選,點選,所有項都應該被勾選 //2.當全選已勾選,點選,所有項都應該取消勾選 this.items.map((item,index)=>{ item.selected=!value }) }, delSelected(){ var result=this.items.filter((item,index)=>{ return !item.selected }) this.items=result } } }) </script> </body> </html>