vue.js - 使用Vue-router 通过地址栏输入回车之后想调用自定义的方法,应该写在什么里面

查看:463
本文介绍了vue.js - 使用Vue-router 通过地址栏输入回车之后想调用自定义的方法,应该写在什么里面的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

这是个spa 想实现通过地址栏点击回车然后对应导航条item 的class 变成active

  • 普通的页面写死这个class就行了 spa怎么解决。 有好的解决方法可以直接跳过 回复答案就行了。

  • 我的方法是每个item 都使用 v-bind绑定is-active这个class

  • 然后在下面的showActive()方法中传入输入的path 在改变绑定的routeClass的bool值

created:function(){
      this.showActive(this.$route.path)
    },
  methods:{ showActive(path){
        if(path == '/')
          this.routeClass.index = true
        else if(path == '/login')
           this.routeClass.login = true
        else if(path =='/video' || path =='/file' || path =='/comments')
        this.routeClass.select = true    
      }
    }
    

  • 由于写在了created 里面,第一次通过url 然后点击回车进来的时候,class可以加上。但是由于组件已经加载好了 created钩子不会再调用了 如何解决这个问题呢?或者有更好的添加class的方法推荐给我

解决方案

建议使用vue-router。我看你这段代码感觉你是想自己构建路由系统,但是需知道自己造的轮子问题多多,社区里面的资源应该用起来。
vue-router 会提供一个this.$route对象,这个对象包括地址栏的一些信息,这些信息决定了你那些按钮应当是激活状态的。
你代码的思路基本是正确的,使用vue-router就没那么多麻烦。
————————
上面回答有欠考虑,以下正解

<template>
    <el-menu :default-active="defaultActive">
        <el-submenu>
            <template slot="title"><i class="el-icon-message"></i>素材管理</template>
            <el-menu-item index="MenuOne">MenuOne</el-menu-item>
            <el-menu-item index="MenuTwo">MenuTwo</el-menu-item>
            <el-menu-item index="MenuThree">MenuThree</el-menu-item>
        </el-submenu>
    </el-menu>
</template>
<script>
    export default{
        data(){
            return {
                defaultActive:this.$route.name
            }
        }
    }
</script>

this.$route.name 或者用this.$route.path都同一个原理,个人习惯用name

这篇关于vue.js - 使用Vue-router 通过地址栏输入回车之后想调用自定义的方法,应该写在什么里面的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆