Iview实例

1 篇文章 0 订阅

1、Menu菜单实例
(1)实例1 (用API里事件,稍许复杂)
//跳转查找name属性,再寻找跳转路径
<template>
  <div id="app">
    <div id="nav">
      <Menu mode="horizontal" @on-select="buildJump">
        <MenuItem name="Home">Home</MenuItem>
        <MenuItem name="About">About</MenuItem>
      </Menu>
    </div>
    <router-view />
  </div>
</template>
<script>
  export default {
    methods: {
      buildJump (name) {
        this.$router.push(name)
      }
    }
  }
</script>

(2)实例2 (简便)
//直接寻找跳转路径
<template>
  <div id="app">
    <div id="nav">
      <Menu mode="horizontal">
        <MenuItem to="/">Home</MenuItem>
        <MenuItem to="/about">About</MenuItem>
      </Menu>
    </div>
    <router-view />
  </div>
</template>
(3)菜单栏自动选中当前功能名 (实例)
//MenuItem里的"to"、"name"属性值要一致
<template>
  <div id="app">
    <div id="nav">
      <Menu mode="horizontal" :active-name="activeName">
        <MenuItem to="/" name="/" replace>Home</MenuItem>
        <MenuItem to="/about" name="/about" replace>About</MenuItem>
      </Menu>
    </div>
    <router-view />
  </div>
</template>
<script>
  export default {
    data () {
      return {
        activeName: this.$route.path
      }
    },
    watch: {
      '$route' () {
        console.log(this.$route)
        this.activeName = this.$route.path
      }
    }
  }
</script>
2、验证是否为登录状态(案例)
第一步 在需要存储token的页面绑定事件写入或释放token

<template>
  <div>
    <Button @click="loginsave">登录</Button>
    <Button @click="loginuset">退出</Button>
  </div>
</template>

<script>
  export default {
    name: 'login',
    methods: {
      loginsave () {
        window.localStorage.setItem('login', 1)
      },
      loginuset () {
        window.localStorage.setItem('login', '')
      }
    }
  }
</script>

第二步 路由文件添加存储token的属性及值
//案例
const routes = [
  {
    path: '/login',
    name: 'Login',
    //定义属性
    meta: {
    //定义属性和属性值
      type: ''
    },
    component: () => import('../views/Login.vue')
  },
  {
    path: '/Admin',
    name: 'Admin',
    //定义属性
    meta: {
    //定义属性和属性值
      type: 'login'
    },
    component: () => import('../views/Admin.vue')
  }
]

第三步 添加判断并导向需跳转的路径(可在路由js里写也可在ivew.js里写)
//注意,不管写到那个二者文件中的任意皆要引用router 的 JS文件
router.beforeEach((to, from, next) => {
  const type = to.meta.type
  if (type === 'login') {
    if (window.localStorage.getItem('login')) {
    //导线下一个页面
      next()
    } else {
    //导回登录页面
      next('/login')
    }
  } else {
    next()
  }
})

3、根据不同客户端加载不同页面
 在路由JS文件里写代码
 话不多说直接上案例

//获取客户端类型
const ua = window.navigator.userAgent
let isMobile = false
if (ua.indexOf('iPhone') >= 0) isMobile = true
if (ua.indexOf('iPad') >= 0) isMobile = true
if (ua.indexOf('Android') >= 0) isMobile = true
//判断类型
const path = isMobile ? '/mobile' : ''

const routes = [
  {
    path: '/login',
    name: 'Login',
    meta: {
      type: ''
    },
    //自动切换加载路径
    component: () => import('../views' + path + '/Login.vue')
  }
]

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值