欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Vue.js搭建移動端購物車界面

 更新時間:2020年06月28日 10:05:22   作者:fareise  
這篇文章主要為大家詳細介紹了Vue.js搭建移動端購物車界面,重點介紹基本結(jié)構(gòu)和數(shù)據(jù)渲染,具有一定的參考價值,感興趣的小伙伴們可以參考一下

本文介紹了如何使用Vue搭建一個移動端購物車界面,最終實現(xiàn)的功能包括:

1. 選擇要最終購買的物品
2. 選擇每件物品購買的數(shù)量
3.  實時更新所選擇物品的總價格 

HTML部分

首先給出HTML部分代碼和注釋,顯示了整個界面的結(jié)構(gòu)。

<body> 
 <div class="checkout"> 
 <div id="app"> 
 <div class="container"> 
  <div class="cart"> 
  <div class="checkout-title"> 
  <span>購物車</span> 
  </div> 
 
  <!-- table --> 
  <div class="item-list-wrap"> 
  <divclassdivclass="cart-item"> 
  <divclassdivclass="cart-item-head"> 
   <ul> 
   <li>商品信息</li> 
   <li>商品金額</li> 
   <li>商品數(shù)量</li> 
   <li>總金額</li> 
   <li>編輯</li> 
   </ul> 
  </div> 
  <ulclassulclass="cart-item-list"> 
   <!--productList在Vue組件中的data定義,包含全部數(shù)據(jù),使用v-for進行遍歷顯示--> 
   <li v-for="item inproductList"> 
   <divclassdivclass="cart-tab-1"> 
   <divclassdivclass="cart-item-check"> 
   <!--Vue2.0中想為HTML標(biāo)簽綁定屬性,必須使用v-bind:,綁定內(nèi)容為對象,這里為a標(biāo)簽綁定check屬性,屬性值為item中的checked值--> 
   <!--@click是v-on:click的縮寫,為這個按鈕綁定了點擊事件,對應(yīng)Vue組件methods中定義的方法selectProduct--> 
   <ahrefahref="javascript:void 0" class="item-check-btn"v-bind:class="{'check': item.checked}"@click="selectedProduct(item)"> 
    <svgclasssvgclass="icon icon-ok"><usexlink:hrefusexlink:href="#icon-ok"></use></svg> 
   </a> 
   </div> 
   <divclassdivclass="cart-item-pic"> 
   <imgv-bind:srcimgv-bind:src="item.productImage" alt="煙"> 
   </div> 
   <divclassdivclass="cart-item-title"> 
   <divclassdivclass="item-name">{{ item.productName }}</div> 
   </div> 
   <divclassdivclass="item-include"> 
   <dl> 
    <dt>贈送:</dt> 
    <ddv-forddv-for="part in item.parts"v-text="part.partsName"></dd> 
   </dl> 
   </div> 
   </div> 
   <divclassdivclass="cart-tab-2"> 
   <!--使用過濾器,|后面加Vue組件filter中定義的過濾器名稱--> 
   <divclassdivclass="item-price">{{ item.productPrice |formatMoney}}</div> 
   </div> 
   <divclassdivclass="cart-tab-3"> 
   <divclassdivclass="item-quantity"> 
   <divclassdivclass="select-self select-self-open"> 
    <divclassdivclass="quantity"> 
    <!--綁定changeMoney()方法,調(diào)整商品數(shù)量--> 
    <ahrefahref="javascript:;"@click="changeMoney(item,-1)">-</a> 
    <inputtypeinputtype="text" :value="item.productQuantity" disabled> 
    <ahrefahref="javascript:;"@click="changeMoney(item,1)">+</a> 
    </div> 
   </div> 
   <divclassdivclass="item-stock">有貨</div> 
   </div> 
   </div> 
   <divclassdivclass="cart-tab-4"> 
   <divclassdivclass="item-price-total">{{ item.productPrice*item.productQuantity| money('元')}}</div> 
   </div> 
   <div class="cart-tab-5"> 
   <divclassdivclass="cart-item-operation"> 
   <!--delConfirm方法控制刪除時的彈框顯示狀態(tài)--> 
   <ahrefahref="javascript:void 0" class="item-edit-btn"@click="delConfirm(item)"> 
    <svg class="iconicon-del"><use xlink:href="#icon-del"></use></svg> 
   </a> 
   </div> 
   </div> 
   </li> 
  </ul> 
  </div> 
  </div> 
 
  <!-- footer --> 
  <div class="cart-foot-wrap"> 
  <divclassdivclass="cart-foot-l"> 
  <divclassdivclass="item-all-check"> 
   <ahrefahref="javascript:void 0"> 
   <spanclassspanclass="item-check-btn" :class="{'check':checkAllFlag}"@click="checkAll(true)"> 
   <svg class="iconicon-ok"><usexlink:hrefusexlink:href="#icon-ok"></use></svg> 
   </span> 
   <span v-show="!checkAllFlag">全選</span> 
   </a> 
  </div> 
  <divclassdivclass="item-all-del"> 
   <ahrefahref="javascript:void 0" class="item-del-btn"@click="checkAll(false)"> 
   <spanv-showspanv-show="checkAllFlag">取消全選</span> 
   </a> 
  </div> 
  </div> 
  <divclassdivclass="cart-foot-r"> 
  <divclassdivclass="item-total"> 
   <!--totalMoney是商品總金額,在Vue組件中通過方法被修改--> 
   Item total: <span class="total-price">{{totalMoney| money('元')}}</span> 
  </div> 
  <divclassdivclass="next-btn-wrap"> 
   <ahrefahref="address.html" class="btn btn--red" style="width:200px">結(jié)賬</a> 
  </div> 
  </div> 
  </div> 
  </div> 
 </div> 
 
 <!--綁定一個md-show類,通過delFlag變量控制這個類,這個類可以讓彈框顯示或隱藏--> 
 <div class="md-modal modal-msg md-modal-transition"id="showModal" v-bind:class="{'md-show':delFlag}"> 
  <div class="md-modal-inner"> 
  <div class="md-top"> 
  <!--關(guān)閉按鈕,通過改變delFlag值控制彈框狀態(tài)--> 
  <buttonclassbuttonclass="md-close" @click="delFlag = false">關(guān)閉</button> 
  </div> 
  <div class="md-content"> 
  <divclassdivclass="confirm-tips"> 
  <pidpid="cusLanInfo">你確認刪除此訂單信息嗎?</p> 
  </div> 
  <div class="btn-wrapcol-2"> 
  <!--選擇yes則調(diào)用delProduct刪除元素--> 
  <button class="btnbtn--m" id="btnModalConfirm"@click="delProduct">Yes</button> 
  <button class="btnbtn--m btn--red" id="btnModalCancel"@click="delFlag=false">No</button> 
  </div> 
  </div> 
  </div> 
 </div> 
 <!--遮罩層,整個都是通過delFlag進行控制的,v-if根據(jù)表達式的真假條件渲染元素--> 
 <div class="md-overlay"v-if="delFlag"></div> 
 
 </div> 
 </div> 
</body> 

對應(yīng)的關(guān)鍵注釋在代碼中給出,下面結(jié)合Vue.js的代碼,對主要部分進行解釋。 

一、Vue組件基本格式

一個Vue組件的基本代碼如下:

new Vue({ 
 el:'#app', 
 data: {}, 
 filters: {}, 
 mounted: function() {}, 
 methods: {} 
}); 

在JS代碼中,使用new Vue即可聲明一個Vue組件。Vue組件主要包括以下幾個字段。
1.  el字段:el字段用來定義該組件在HTML中的哪個位置生效,需要傳入HTML中某個元素的id值。這里傳入了#app,表示HTML中id為app的元素內(nèi)部都是這個Vue組件的作用范圍。
2. data字段:data字段定義了Vue組件中的數(shù)據(jù),可能在HTML中進行渲染。在本應(yīng)用中,商品的價格、名稱、圖片鏈接等信息,都是使用Vue組件中data字段內(nèi)的數(shù)據(jù)進行渲染的。
3. filter字段:filter字段是一個過濾器,在本應(yīng)用中,針對價格等需要格式化的文本,就可以使用filter進行過濾。
4. mounted字段:mounted字段通常定義一個方法,這個方法將在頁面加載完成時自動執(zhí)行,在React等框架中都有類似的機制。
5. method字段:method字段用來定義Vue組件中需要用到的方法,這個字段的內(nèi)容往往是需要投入時間最多的部分,例如頁面中選擇商品、增加數(shù)量等邏輯,都是在這個字段中進行編輯的。
以上就是一個vue組件的主要組成部分,下面對各個部分功能的代碼編寫進行簡要介紹。 

二、數(shù)據(jù)渲染

數(shù)據(jù)渲染部分,要渲染的數(shù)據(jù)都存放在data中。每一個商品的信息都被模擬存儲在了cart.json的文件中。我們可以實現(xiàn)數(shù)據(jù)自動加載,基本思路是:在method字段中定義一個方法,用來加載cart.json中的數(shù)據(jù),并將其存放到data字段中定義的對應(yīng)變量中。在mouted字段中,自動調(diào)用這個方法。這樣就實現(xiàn)了頁面加載完成后自動加載數(shù)據(jù)。對應(yīng)的JS代碼和注釋如下:

data: { 
 //存放商品json數(shù)據(jù)信息 
 productList: [] 
 } 
methods: { 
 //cartView()方法用來加載數(shù)據(jù),并將數(shù)據(jù)存儲在這個Vue組件中的productList變量中 
 cartView: function() { 
 var _this = this; 
 //使用vue-resource模塊加載數(shù)據(jù),類似Jquery中的AJAX,返回數(shù)據(jù)存放在res.body中 
 this.$http.get("data/cartData.json", {"id":123}).then(function(res) { 
  _this.productList =res.body.result.list; 
  // _this.totalMoney = res.body.result.totalMoney; 
 }); 
} 
 } 
 mounted: function() { 
 //執(zhí)行代碼放在$nextTick中,保證頁面結(jié)構(gòu)加載完畢后再執(zhí)行函數(shù) 
 this.$nextTick(function() { 
 this.cartView(); //使用this調(diào)用methods中定義的cartView()方法 
 }) 
 } 

完成了這部分代碼,所有商品的數(shù)據(jù)就存放在了組件中變量名為productList的字段中。
在前端HTML部分的進行調(diào)用,需要使用v-for指令。這個指令用來循環(huán)遍歷Vue中的數(shù)據(jù),代碼如下:

<ul class="cart-item-list"> 
 <li v-for="item in productList"> 
 <div class="cart-tab-1"> 
 <div class="cart-item-check"> 
 </div> 
 <div class="cart-item-pic"> 
 <img v-bind:src="item.productImage" alt="煙"> 
 </div> 
 <div class="cart-item-title"> 
 <div class="item-name">{{ item.productName}}</div> 
 </div> 
 <div class="item-include"> 
 <dl> 
  <dt>贈送:</dt> 
  <dd v-for="part in item.parts"v-text="part.partsName"></dd> 
 </dl> 
 </div> 
 </div> 
</ul> 

通過v-for指令,遍歷了變量productList中的數(shù)據(jù),并在內(nèi)部的HTML中調(diào)用。利潤item.productImage獲取對應(yīng)圖片URL地址;item.productName獲取商品名稱等。這樣,就自動生成了一個商品信息列表。

下一部分將介紹邏輯代碼的編寫。

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • vue+springmvc導(dǎo)出excel數(shù)據(jù)的實現(xiàn)代碼

    vue+springmvc導(dǎo)出excel數(shù)據(jù)的實現(xiàn)代碼

    這篇文章主要介紹了vue+springmvc導(dǎo)出excel數(shù)據(jù)的實現(xiàn)代碼,非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下
    2018-06-06
  • 解決router.beforeEach()動態(tài)加載路由出現(xiàn)死循環(huán)問題

    解決router.beforeEach()動態(tài)加載路由出現(xiàn)死循環(huán)問題

    這篇文章主要介紹了解決router.beforeEach()動態(tài)加載路由出現(xiàn)死循環(huán)問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-10-10
  • vue 動態(tài)生成拓撲圖的示例

    vue 動態(tài)生成拓撲圖的示例

    這篇文章主要介紹了vue 動態(tài)生成拓撲圖的示例,幫助大家更好的理解和使用vue框架,感興趣的朋友可以了解下
    2021-01-01
  • vue整合項目中百度API示例詳解

    vue整合項目中百度API示例詳解

    這篇文章主要為大家介紹了vue整合項目中百度API示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-09-09
  • vue動態(tài)生成dom并且自動綁定事件

    vue動態(tài)生成dom并且自動綁定事件

    本篇文章主要介紹了vue動態(tài)生成dom并且自動綁定事件,具有一定的參考價值,有興趣的可以了解一下。
    2017-04-04
  • 渲染函數(shù) & JSX詳情

    渲染函數(shù) & JSX詳情

    本篇文章來講解渲染函數(shù) & JSX,Vue 推薦在絕大多數(shù)情況下使用模板來創(chuàng)建你的 HTML。然而在一些場景中,你真的需要 JavaScript 的完全編程的能力。這時我們可以用渲染函數(shù),它比模板更接近編譯器,需要的朋友可以參考一下
    2021-09-09
  • 詳解Vue 2中的? initState 狀態(tài)初始化

    詳解Vue 2中的? initState 狀態(tài)初始化

    這篇文章主要介紹了詳解Vue 2中的initState狀態(tài)初始化,文章圍繞主題展開詳細的內(nèi)容介紹,具有一定的參考價值,需要的小伙伴可以參考一下
    2022-08-08
  • 分享7個成為更好的Vue開發(fā)者的技巧

    分享7個成為更好的Vue開發(fā)者的技巧

    作為使用Vue已經(jīng)很多年的人,特別是去年一直在使用?Vue3,因此,學(xué)到了很多東西。所以本文為大家準(zhǔn)備了7個讓我們成為更好?Vue?開發(fā)者的技巧,需要的可以參考一下
    2022-06-06
  • vue組件tabbar使用方法詳解

    vue組件tabbar使用方法詳解

    這篇文章主要為大家詳細介紹了vue組件tabbar使用方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-11-11
  • bootstrap vue.js實現(xiàn)tab效果

    bootstrap vue.js實現(xiàn)tab效果

    這篇文章主要為大家詳細介紹了bootstrap vue.js實現(xiàn)tab效果,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-02-02

最新評論