餓了嗎開源組件庫Element模擬購物車系統(tǒng)

傳統(tǒng)的用html+jquery來實現(xiàn)購物車系統(tǒng)要非常的復雜,但是購物車系統(tǒng)完全是一個數(shù)據(jù)驅動的系統(tǒng),因此采用諸如Vue.js、angular.js這些框架要簡單的多陨仅。餓了嗎開源的組件庫Element是基于Vue.js 2.0實現(xiàn)的,該組件庫封裝了開發(fā)中需要的各種組件铝侵,并且提供了友好的API文檔供開發(fā)者查看灼伤,下面就是我用Element實現(xiàn)的一個簡單的購物車系統(tǒng)。(https://github.com/iwideal/MyGit/tree/master/HTML/shopping-cart
首先咪鲜,我們用Vue.js推薦的命令行工具來搭建項目骨架狐赡。

# 創(chuàng)建一個基于 webpack 模板的新項目
$ vue init webpack shopping-cart
# 安裝依賴,走你
$ cd shopping-cart
$ npm install
$ npm run dev

這時候疟丙,生成的項目骨架如圖:



這時候颖侄,我們要像maven一樣,給項目添加依賴享郊,在package.json文件中添加Element依賴:

 "dependencies": { "element-ui": "^1.1.6", "vue": "^2.1.0" },

添加完依賴之后览祖,這是我們可以在項目中使用依賴了,在main.js文件中炊琉,導入ElementUI:

// The Vue build version to load with the `import` command
// (runtime-only or standalone) has been set in webpack.base.conf with an alias.
import Vue from 'vue'
import ElementUI from 'element-ui'
import 'element-ui/lib/theme-default/index.css'
import App from './App.vue'
Vue.use(ElementUI)
/* eslint-disable no-new */
new Vue({ el: '#app', template: '<App/>', components: { App }})

重新安裝依賴:

$ cd shopping-cart
$ npm install
$ npm run dev

這時展蒂,我們在App.vue中,寫入我們的購物車代碼。
預覽一下锰悼,整體效果如下:


一柳骄、創(chuàng)建購物車骨架,即復雜型的表格松捉。我們這時可以從Element的官網(wǎng)(http://element.eleme.io/#/zh-CN/component/table)copy過來模板夹界,我們選擇帶有checkbox的表格:

<template>
<div> 
<el-table :data="tableData" border style="width: 100%" @selection-change="selected"> 
<el-table-column type="selection" width="50"> </el-table-column>
<el-table-column label="商品名稱" width="680"> 
<template scope="scope"> 
<div style="margin-left: 50px">
![](scope.row.goods.img) 
<span style="font-size: 18px;padding-left: 200px;">{{scope.row.goods.descript}}</span> 
</div>
</template> 
</el-table-column>
<el-table-column label="單價" width="150" prop="price"> </el-table-column> 
<el-table-column label="數(shù)量" width="200">
<template scope="scope"> 
<div> 
<el-input v-model="scope.row.number" @change="handleInput(scope.row)"> 
<el-button slot="prepend" @click="del(scope.row)">
<i class="el-icon-minus"></i>
</el-button>
<el-button slot="append" @click="add(scope.row)">
<i class="el-icon-plus"></i>
</el-button>
</el-input>
</div> 
</template> 
</el-table-column> 
<el-table-column label="小計" width="150" prop="goodTotal"> </el-table-column> 
<el-table-column label="操作">
<template scope="scope"> 
<el-button type="danger" @click="handleDelete(scope.$index, scope.row)"> 刪除
<i class="el-icon-delete2 el-icon--right"></i>
</el-button>
</template> 
</el-table-column>
</el-table> <br> 
<el-button type="info" style="float: right">{{"商品總額:" + moneyTotal}}</el-button>
</div>
</template>

購物車骨架搭建好之后,我們就可以向里面插入數(shù)據(jù)了:

data() {
 return {
 tableData: [
{
  goods:{ 
  img:'http://i1.mifile.cn/a1/pms_1474859997.10825620!80x80.jpg', 
  descript:'小米手環(huán)2',
 }, 
  price:149, 
  number:1,
 goodTotal:149,
 },
{ 
goods:{ 
img:'http://i1.mifile.cn/a1/pms_1482321199.12589253!80x80.jpg', 
descript:'小米活塞耳機 清新版 黑色', 
},
 price:29,
 number:1, 
goodTotal:29,
 },
{ 
goods:{ 
img:'http://i1.mifile.cn/a1/pms_1468288696.74437986!80x80.jpg', 
descript:'米家LED隨身燈 增強版 藍色', }, 
price:14.9, 
number:1, 
goodTotal:14.9, 
},
{ 
goods:{ 
img:'http://i1.mifile.cn/a1/pms_1476688193.46995320.jpg?width=140&height=140', 
descript:'10000mAh小米移動電源2 銀色',
 }, 
price:79, 
number:1,
 goodTotal:79, 
}
],
 moneyTotal:0, 
multipleSelection:[],
 } 
}

這時候隘世,我們需要對購物車中的各種事件做處理,包括刪除商品鸠踪、增加(減少)商品數(shù)量丙者、選中商品等:

methods: { 
handleDelete(index, row) { 
this.$confirm('確定刪除該商品?', '提示', { 
confirmButtonText: '確定', 
cancelButtonText: '取消', 
type: 'warning' 
}).then(() => { 
//刪除數(shù)組中指定的元素 this.tableData.splice(index,1);
 this.$message({ type: 'success', message: '刪除成功!' }); 
}).catch(() => { 
this.$message({ type: 'info', message: '已取消刪除' });
 });
 }, 
handleInput:function(value){
 if(null==value.number || value.number==""){
 value.number=1;
 }
 value.goodTotal=(value.number*value.price).toFixed(2);
//保留兩位小數(shù) //增加商品數(shù)量也需要重新計算商品總價 
this.selected(this.multipleSelection); 
}, 
add:function(addGood){ 
//輸入框輸入值變化時會變?yōu)樽址袷椒祷氐絡s
 //此處要用v-model营密,實現(xiàn)雙向數(shù)據(jù)綁定 
if(typeof addGood.number=='string'){ 
addGood.number=parseInt(addGood.number);
 }; 
addGood.number+=1; 
}, 
del:function(delGood){ 
if(typeof delGood.number=='string'){ 
delGood.number=parseInt(delGood.number); 
};
 if(delGood.number>1){
 delGood.number-=1; 
} 
}, 
//返回的參數(shù)為選中行對應的對象 
selected:function(selection){ 
this.multipleSelection=selection;
 this.moneyTotal=0;
 //此處不支持forEach循環(huán)械媒,只能用原始方法了
 for(var i=0;i<selection.length;i++){
 //判斷返回的值是否是字符串
 if(typeof selection[i].goodTotal=='string'){
 selection[i].goodTotal=parseInt(selection[i].goodTotal); 
}; 
this.moneyTotal+=selection[i].goodTotal;
 }
 },
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市评汰,隨后出現(xiàn)的幾起案子纷捞,更是在濱河造成了極大的恐慌,老刑警劉巖被去,帶你破解...
    沈念sama閱讀 219,270評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件主儡,死亡現(xiàn)場離奇詭異,居然都是意外死亡惨缆,警方通過查閱死者的電腦和手機糜值,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,489評論 3 395
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來坯墨,“玉大人寂汇,你說我怎么就攤上這事〉啡荆” “怎么了骄瓣?”我有些...
    開封第一講書人閱讀 165,630評論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長耍攘。 經(jīng)常有香客問我榕栏,道長,這世上最難降的妖魔是什么少漆? 我笑而不...
    開封第一講書人閱讀 58,906評論 1 295
  • 正文 為了忘掉前任臼膏,我火速辦了婚禮,結果婚禮上示损,老公的妹妹穿的比我還像新娘渗磅。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 67,928評論 6 392
  • 文/花漫 我一把揭開白布始鱼。 她就那樣靜靜地躺著仔掸,像睡著了一般。 火紅的嫁衣襯著肌膚如雪医清。 梳的紋絲不亂的頭發(fā)上起暮,一...
    開封第一講書人閱讀 51,718評論 1 305
  • 那天,我揣著相機與錄音会烙,去河邊找鬼负懦。 笑死,一個胖子當著我的面吹牛柏腻,可吹牛的內容都是我干的纸厉。 我是一名探鬼主播,決...
    沈念sama閱讀 40,442評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼五嫂,長吁一口氣:“原來是場噩夢啊……” “哼颗品!你這毒婦竟也來了?” 一聲冷哼從身側響起沃缘,我...
    開封第一講書人閱讀 39,345評論 0 276
  • 序言:老撾萬榮一對情侶失蹤躯枢,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后槐臀,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體锄蹂,經(jīng)...
    沈念sama閱讀 45,802評論 1 317
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,984評論 3 337
  • 正文 我和宋清朗相戀三年峰档,在試婚紗的時候發(fā)現(xiàn)自己被綠了败匹。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,117評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡讥巡,死狀恐怖掀亩,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情欢顷,我是刑警寧澤槽棍,帶...
    沈念sama閱讀 35,810評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站抬驴,受9級特大地震影響炼七,放射性物質發(fā)生泄漏。R本人自食惡果不足惜布持,卻給世界環(huán)境...
    茶點故事閱讀 41,462評論 3 331
  • 文/蒙蒙 一豌拙、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧题暖,春花似錦按傅、人聲如沸捉超。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,011評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽拼岳。三九已至,卻和暖如春况芒,著一層夾襖步出監(jiān)牢的瞬間惜纸,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,139評論 1 272
  • 我被黑心中介騙來泰國打工绝骚, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留耐版,地道東北人。 一個月前我還...
    沈念sama閱讀 48,377評論 3 373
  • 正文 我出身青樓压汪,卻偏偏與公主長得像椭更,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子蛾魄,可洞房花燭夜當晚...
    茶點故事閱讀 45,060評論 2 355

推薦閱讀更多精彩內容