接饿了么45个页面重构(四):vuex的使用和food页面开发一
排序
同理,与分类一样,添加个chooseType()
点击事件展示排序内容。
|
|
排序的筛选条件分为:智能排序、距离最近、销量最高、起步价最低、配送速度最快、评分最高。分别在dom中渲染。
|
|
定义它们的id值,同时绑定当前点击的sortByType
为它们的id,代码表示<p id="0" :class="{sort_select: sortByType == 0}">
。
点击某个选项后当前选项会有一个√的标识符。例如:<svg v-if="sortByType == 5">
用来判断sortByType
是否与当前id值相同,如果相同,显示√标识符。效果如图:
点击某个排序方式获取相应数据
点击某个排序方式获取相应数据,创建foodSort($event)
点击事件
<ul class="sort_list_container" @click="foodSort($event)">
|
|
传入一个事件event
,通过event获得触发事件的元素id。this.sortByType = event.target.getAttribute('id')
,在控制台打印this.sortByType
发现就是当前点击目标的id值。
获取餐厅成功,如图:
transition过渡
Vue 提供了transition
的封装组件,使用transition
来设置过渡总体效果。
|
|
接着为过渡类名添加规则
|
|
这四个类名与上面transition的name属性有关,比如name=”showlist”,会有如下四个CSS类名:
- showlist-enter:进入过渡的开始状态,元素被插入时生效,只应用一帧后立即删除;
- showlist-enter-active:进入过渡的结束状态,元素被插入时就生效,在过渡过程完成之后移除;
- showlist-leave:离开过渡的开始状态,元素被删除时触发,只应用一帧后立即删除;
- showlist-leave-active:离开过渡的结束状态,元素被删除时生效,离开过渡完成之后被删除
showlist-enter和showlist-leave-active类设置CSS为opacity: 0
,说明过渡刚进入和离开的时候透明度为0,即不显示。
筛选
筛选包括配送方式和商家属性,选择后点击确定转跳到筛选后对应的餐厅列表。同理,与前两个一样,添加个chooseType()
点击事件展示排序内容。
|
|
获取配送方式和商家属性数据
直接上代码吧!
webpack.dev.config.js
|
|
food.js
|
|
food.vue
|
|
配送方式
创建点击事件selectDeliveryMode(id)
,选中配送方式。在data中定义要用到的数据属性。
|
|
当delivery_mode为空时,选中当前项同时filterNum加一;反之delivery_mode为当前已有值时,清空所选项,并且filterNum减一;如果delivery_mode已有值且不等于当前选择值,则赋值delivery_mode为当前所选id。
将获取到的数据填充dom
|
|
商家属性
将获取到的商家属性数据填充dom
|
|
遍历supports商家属性v-for="(item,index) in supports"
,获取每个item的属性。点击商家活动,选中取反当前状态,创建点击事件selectSupportIds(index, item.id)
。绑定当前选中的商家属性,表示为:class="{selected_filter: support_ids[index].status}"
|
|
清空与确定
点击确定或清空按钮,触发相应的事件处理。
|
|
清空事件
点击清空按钮清空数据,否则一直保持原有状态
|
|
确定事件
点击确认后更新相对应的餐厅列表数据。
|
|
筛选选项整个效果如图:
到此food页面开发完毕!