day06

1.复习
1)search模块需要的服务器数据,已经请求到了,并存贮再来vuex仓库中,有一些数据通过getter进行简化
切记:getters简化数据而生
2)商品列表、平台售卖的属性已经动态数据

1)动态的开发面包屑中的分类名:
编程式导航路由调转(自己跳自己)

2)动态开发面包屑中的文字
2.1 当面包屑中的关键字清除之后,需要让兄弟组件header组件中的关键字清除

设计组件通信:
props:父子
自定义事件:子父
vuex:万能
插槽:父子
pubsub-js:万能
$bus:全局事件总线

在main.js中配置
new Vue({
  render: h => h(App),

// 全局事件总线KaTeX parse error: Expected '}', got 'EOF' at end of input: … Vue.prototype.bus = this;
  },

// 注册路口,kv一致,省略v
  // 注册路由信息,书写router是,组件身上拥有 r o u t e , route, route,router属性
  router,
  // 注册仓库,组件实例的身上会多了一个属性KaTeX parse error: Expected 'EOF', got '}' at position 17: …tore属性   store }̲).mount(‘#app’)

  •                        
  •               {{ searchParams.categoryName               }}

// 删除分类的名字
    removeCategoryName() {
      // 只是把服务器的参数置空了,还需要向服务器发请求
      // 带给服务器参数
      this.searchParams.categoryName = undefined;
      this.searchParams.category1Id = undefined;
      this.searchParams.category2Id = undefined;
      this.searchParams.category3Id = undefined;
      // 地址栏也要修改:进行路由的跳转(现在的路由只是跳转到自己这里)
      // 严谨:路由当中出现params不应改删除,路由跳转的应该带着
      // this. r o u t e r . p u s h ( n a m e : " s e a r c h " ) ;       i f ( t h i s . router.push({name:"search"});       if (this. router.push(name:"search");   if(this.route.params) {
        this.KaTeX parse error: Expected '}', got 'EOF' at end of input: …, params: this.route.params });
      }

this.GetData();
    },
    removeKeyword() {
      // 给服务器带的ssearchParasm下的keyword参数置空
      this.searchParams.keyword = undefined;
      // 再次发请求
      this.GetData();
      // 通知清除header下关键字keyword
      this. b u s . bus. bus.emit(“clear”)
      // 进行路由的跳转
      if(this.KaTeX parse error: Expected '}', got 'EOF' at end of input: …{         this.router.push({
        “name”:“search”,query:this.$route.query
      })

}
     
    },
  },
在header中的index配置
      if (this.KaTeX parse error: Expected '}', got 'EOF' at end of input: …n.query = this.route.query;
        this.KaTeX parse error: Expected 'EOF', got '}' at position 30: …cation);       }̲     },   },   …bus.$on(“clear”,()=>{
      this.keyword = “”;
     
    })
  }
};
子给父传数据
在searchselector.vue中:


  •           <li
                v-for=“trademark in trademarkList”
                :key=“trademark.tmId”
                @click=“Trademarkhandler(trademark)”
              >
                {{ trademark.tmName }}
             
           

     

methods: {
    // 品牌方事件处理函数
    Trademarkhandler(trademark) {
      // 点击了品牌,整理参数,让服务器发送请求
      // 父组件发请求
      // searchParams参数需要传递参数
      this.$emit(‘trademarkInfo’,trademark);

},
  },
};
在index.vue中:
     
        <SearchSelector @trademarkInfo=“trademarkInfo” />

// 自定义事件的回调
    trademarkInfo(){

}
平台属性


   


     
{{ attr.attrName }}

     

       

  •           <li
                v-for=“attrvalue in attr.attrValueList”
                :key=“attrvalue”
                @click=“attrInfo(attr,attrvalue)”
              >
                {{ attrvalue }}
             
           

     

// 品牌方事件处理函数
    Trademarkhandler(trademark) {
      // 点击了品牌,整理参数,让服务器发送请求
      // 父组件发请求
      // searchParams参数需要传递参数
      this.KaTeX parse error: Expected 'EOF', got '}' at position 39: …rademark);     }̲,     // 平台售卖属性…emit(“attrInfo”, attr, attrvalue);
    },
  },
};

  •                        
  •               {{ searchParams.categoryName               }}


        <SearchSelector @trademarkInfo=“trademarkInfo” @attrInfo=“attrInfo” />

// 自定义事件的回调
    trademarkInfo(trademark) {
      // 1.整理参数
      // 2.重新发送请求

this.searchParams.trademark = ${trademark.tmId}:${trademark.tmName};
      this.GetData();
    },
    removeTrademark() {
      // 将品牌信息置空
      this.searchParams.trademark = undefined;
      // 再次发请求
      this.GetData();
    },
    // 收集平台属性值
    attrInfo(attr, attrvalue) {
      let props = ${attr.attrId}:${attrvalue}:${attr.attrName};
      // console.log(attr,attrvalue);
      // 数组去重
      // if语句中如果只有一条数据,可以省略{}
      if (this.searchParams.props.indexOf(props) == -1) {
        this.searchParams.props.push(props);
        // 再次发请求
        this.GetData();
      }
    },
    removeattr(index) {
      // 再次整理参数
      this.searchParams.props.splice(index,1);
      // 再发请求
      this.GetData();
    },
  },

排序
待定

开发详情页
详情页还没有注册为路由组件
import Detail from ‘@/pages/Detail’;

    {

path:“/detail/:skuid”,
            component:Detail,
            meta:{show:true}
        }
当点击商品的时候,跳转到详情页面,在路由上也带上产品的id


                     
                     
                 
把router信息重新存放在routers.js中
// 路由配置信息

import Home from ‘@/pages/Home’;
import Search from ‘@/pages/Search’;
import Login from ‘@/pages/Login’;
import Register from ‘@/pages/Register’;
import Detail from ‘@/pages/Detail’;
// 配置路由

export default [
    {
        path:“/detail/:skuid”,
        component:Detail,
        meta:{show:true}
    }
    ,{
    path: “/home”,
    component: Home,
    meta:{show:true}
},
{
    path: “/search/:keyword?”,

component: Search,
    meta:{show:true},
    name:“search”,
    //4: 路由组件能不能传递props数据?  
    //布尔值写法:只能传递params参数
    //props:true,
    //对象写法:额外的给路由组件传递一些props
    //props:{a:1,b:2}
    //函数写法:可以params参数、query参数,通过props传递给路由组件
//         props:(KaTeX parse error: Expected '}', got 'EOF' at end of input: …eturn {keyword:route.params.keyword,k:KaTeX parse error: Expected 'EOF', got '}' at position 14: route.query.k}̲ //         } /…route)=>({keyword: r o u t e . p a r a m s . k e y w o r d , k : route.params.keyword,k: route.params.keyword,k:route.query.k})
       
},
{
    path: “/login”,
    component: Login,
    meta:{show:false}
}, {
    path: “/register”,
    component: Register,
    meta:{show:false}
},
// 重定向,项目跑起来,访问/,立马重定向到首页
{
    path: “*”,
    redirect: “/home”
}]
在router–》index.js中引用
配置文件,使滚动条处于最上方
// 配置路由的地方
import Vue from ‘vue’;
import VueRouter from ‘vue-router’;
import routers from ‘./routers’;
// 使用插件
Vue.use(VueRouter);
// 引入路由组件
// import Home from ‘@/pages/Home’;
// import Search from ‘@/pages/Search’;
// import Login from ‘@/pages/Login’;
// import Register from ‘@/pages/Register’;

// import Detail from ‘@/pages/Detail’;
// 配置路由
export default new VueRouter({
    // 配置路由
    routes: routers,
    scrollBehavior(to, from, savedPosition) {
        //    返回值y=0 表示滚动条在最上方
            return { y: 0 }
          },
})

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值