Vue+Node+MongoDB実現商城システム——12.13.14章:住所及び注文モジュール機能
4627 ワード
一、住所
機能1:レンダリングアドレスリスト1、reqによるバックグラウンドインタフェースを作成する.cookies.userIdは、ユーザを問合せ、ユーザaddressList に戻る2、フロントリクエスト後、リストレンダリング 機能2:デフォルトでは3つのデータしか表示されません vueのcomputed計算プロパティを使用して、元のaddressListsの最初の3つを切り取って表示します. slice(0,this.limit)メソッド最初の3つのデータ を切り取ります.
展開をクリックすると、すべてのアドレスが表示されます limitの値を直接変更するとcomputedプロパティの変更 がトリガーされます.
機能3:デフォルトアドレスの設定クリックするとaddressIdが入力post要求 が送信される.バックグラウンドは要求を受信後、req.body.addressIdはidを取り、userIdに基づいてaddressListを問合せ、addressIdに基づいてデータ を更新する.
機能四:アドレスの削除フロントエンドクリック送信削除要求 バックグラウンド受信addressIdに従ってuserIdは対応するデータ($pull削除) を削除する.
機能5:nextをクリックして注文確認にジャンプは、v-bind:to属性を使用してルーティングアドレスを動的にバインドし、パラメータ を携帯する. query携帯パラメータ
二、注文
機能1:レンダリングアドレスリスト
export default {
data(){
return{
limit:3,
addressLists:[]
}
},
methods:{
getAddressList(){
```
},
expand(){
if(this.limit==3){
this.limit=this.addressLists.length;
}else{
this.limit=3;
}
}
},
mounted(){
this.getAddressList()
},
compouted:{
addressListsFilter(){
return this.addressLists.slice(0,this.limit)
}
}
}
機能3:デフォルトアドレスの設定
router.post('/address/setdefault',function(req,res,next){
var userId = req.cookies.userId,
addressId = req.body.addressId;
User.findOne({userId:userId},function(err,doc){
var addressList = doc.addressList;
addressList.forEach(function(item,index){
if(item.addressId==addressId){
item.isDefault=true;
}else{
item.isDefault=false;
}
})
doc.save(function(err1,doc1){
if(err){
res.json({
status:'1',
msg:err.msg
})
}else{
res.json({
status:'0',
msg:'',
result:'1'
})
}
})
})
})
機能四:アドレスの削除
// :
User.update({
userId:userId
},{
$pull:{
'addressList':{
'addressId':addressId
}
}
},function(err,doc){
.......
})
機能5:nextをクリックして注文確認にジャンプ
<div class="next-btn-wrap">
class="btn btn--m btn--red" :to="{path:'orderConfirm',query:{'addressId':selectedAddId}}">Next
div>
二、注文