商品详情页
设置商品的router,点击商品展示商品详情页,设置传递参数。
|
|
router传参
传参是前端经常需要用的一个操作,很多场景都会需要用到上个页面的参数。Vue router使用query和params传参,当你使用params方法传参的时候,要在路由后面加参数名,并且传参的时候,参数名要跟路由后面设置的参数名对应。使用query方法,就没有这种限制,直接在跳转里面用就可以。
例如:
params:/router1/:id ,/router1/123,/router1/789 ,这里的id叫做params
query:/router1?id=123 ,/router1?id=456 ,这里的id叫做query。
query更加类似于我们ajax中get传参,params则类似于post,说的再简单一点,前者在浏览器地址栏中显示参数,后者则不显示。
在这里我使用query传参。
shop.vue
|
|
页面转跳之后通过router特性获取上页传递过来的参数,同时data中设置一些数据。
foodDetail.vue
|
|
设置商品图片:<img :src="getImgPath(image_path)" class="food_img">
设置商品描述:<p class="description"></p>
设置商品名称和评分
|
|
设置月售单量和售价
|
|
设置评论数和好评率
|
|
效果如图:
餐厅详情页
在router.js中设置路由映射。
|
|
点击店铺公告转跳餐厅详情页面,设置路由
|
|
在shop.vue组件中获取到商家详情信息并通过vuex管理对数据做处理。
state.js
|
|
mutation-types.js
|
|
mutations.js
|
|
shop.vue
|
|
通过this.RECORD_SHOPDETAIL(this.shopDetailData)
记录商家详情信息,在shopDetail.vue组件中通过mapState获取商家详情信息。
|
|
接着填充dom
设置属性:
|
|
设置活动:
|
|
设置监督检查结果,使用v-if和v-else判断它的状态显示:
|
|
设置商家信息:
|
|
食品监督安全公示
router.js中设置路由映射。
|
|
设置路由跳转
|
|
具体代码很简单就不传了。
效果如图:
总结:
到这整个shop.vue组件全部开发完毕!组件中运用不少v-if也讲了v-if与v-show的区别,以及router传参方式。Vue在插入、更新或者移除DOM元素时会应用过渡效果,文中用到初始渲染的过渡,自定义过渡钩子函数利用JavaScript的方式直接操作DOM。数据处理上我使用vuex对购物车所有数据做统一管理,使整个数据流更加清晰。
具体代码见:
https://github.com/kakajing/vue-elmm
如有什么疑问或者不懂之处,可以加这个群交流:
QQ群:157028081