美文网首页
vue watch 监听路由变化

vue watch 监听路由变化

作者: 瞳孔里的温柔你看得见不 | 来源:发表于2018-11-21 14:44 被阅读0次

    <template>

        <div>

          <van-tabbar v-model="active" @change="changeTabbar(active)">

          <van-tabbar-item icon="shop">首页</van-tabbar-item>

          <van-tabbar-item icon="exchange">列表页</van-tabbar-item>

          <van-tabbar-item icon="cart" :info="itemCount">购物车</van-tabbar-item>

          <van-tabbar-item icon="contact">会员中心</van-tabbar-item>

          </van-tabbar>

        </div>

    </template>

    <script>

    import store from "../../store"

    import { mapState, mapActions } from "vuex"

        export default{

            // vue使用props动态传值给子组件里面的函数用

            props:['floorTitle'],

            data(){

                return{

                  active: 0

                }

            },

            created(){

              this.changeTabActive()

            },

            watch:{  // 当数据发生改变的时候再赋值

                // floorData 监视的对象

            },

    computed: {

    ...mapState({

    items: state => store.state.shopcart.items,

    totalNumber: state => store.state.shopcart.totalNumber,

    totalMoney: state => store.state.shopcart.totalMoney,

    itemCount: state => store.state.shopcart.itemCount

    })

    },

    updated(){

    this.changeTabActive()

    },

    methods:{

    changeTabbar(active){

    console.log(active)

    switch (active) {

    case 0:

    //使用name跳转,因为路径有时候会改变,这样就需要改编程式导航,比较麻烦

    this.$router.push({name:'Main'})

    break;

    case 1:

    this.$router.push({name:'goodsList'})

    break

    case 2:

    this.$router.push({name:'cart'})

    break

    case 3:

    this.$router.push({name:'user'})

    default:

    break;

    }

    },

    changeTabActive(){

    this.nowPath=this.$route.path  //vue提供的方法

              if(this.nowPath=="/shoppingMall"){

              this.active=0

              }else if(this.nowPath=="/goodsList"){

              this.active=1

              }else if(this.nowPath=="/cart"){

              this.active=2

              }else if(this.nowPath=="/user"){

              this.active=3

              }

    }

      },

    watch:{

            '$route': 'changeTabActive'

    }

        }

    </script>

    相关文章

      网友评论

          本文标题:vue watch 监听路由变化

          本文链接:https://www.haomeiwen.com/subject/uxkcqqtx.html