vue 路由id_vue router 路由组件

按需加载,头和底,可根据页面需求,是否统一显示头和底:

JavaScript Code复制内容到剪贴板

importVue from'vue'

importRouter from'vue-router'

importAppHeader from'@/components/common/Header.vue'

importAppFooter from'@/components/common/Footer.vue'

importpublishIndex from'@/components/cms/publishIndex'// 发布首页的页面.

importpublishBase from'@/components/cms/publishBase'// 必填项

//按需加载

constuserIndex = r => require.ensure([], () => r(require('../components/user/index')),'userIndex')//首页

exportdefaultnewRouter({

routes: [{

path: '/',

name: 'userIndex',

components: {

header: AppHeader,

main: userIndex,

footer: AppFooter

}

},

{

path: '/cms/index',//用户发布首页,选择类型

name: 'publish',

components: {

header: AppHeader,

main: publishIndex,

footer: AppFooter

}

},

{

path: '/cms/publish-base/:type/:fee',//填写必要信息,type 发布类型,fee是否付费,1不限,2免费

name: 'publishBase',

components: {

header: AppHeader,

main: publishBase

}

},

]

})

如果全部都有头和底则可以直接写成:

JavaScript Code复制内容到剪贴板

exportdefaultnewRouter({

routes: [{

path: '/',

name: 'Main',

component: Main

},

]

})

在路由中传参,如type,fee

1、在组件中获取传参的值 :

路由:

JavaScript Code复制内容到剪贴板

{

path: '/msg/message-detail/:id',

components: {

main: messageDetail,

footer: AppFooter

}

},

在compoents中获取路由上的参数:

JavaScript Code复制内容到剪贴板

let publishId = this.$route.params.id;

在模板中使用:

JavaScript Code复制内容到剪贴板

$route.params.id

2、在路由上直接添加参数:

XML/HTML Code复制内容到剪贴板

@click="toRouter({path: '/course/lesson-hour',query: {lessonId: item.lessonId}})"

methods: {

toRouter(router) {

this.$router.push(router);

},

取值,模板中取:

JavaScript Code复制内容到剪贴板

$route.query.lessonId

如果这个传递的参数,可有可无,可使用?:

JavaScript Code复制内容到剪贴板

{//新增/修改课时,带id过来

path: '/course/lesson-edit/:id?',

name: 'addLesson',

components: {

main: addLesson

}

},

表示 ,这个id是不确定的,可以有 也可以不要

路由组件,返回上一页:

JavaScript Code复制内容到剪贴板

this.$router.go(-1);

如果直接在模块中写:

XML/HTML Code复制内容到剪贴板

上一步

跳转指定路由:

JavaScript Code复制内容到剪贴板

let id = res.publishId;

this.$router.push('/cms/publish-more/'+ id);

获取当前路由:

JavaScript Code复制内容到剪贴板

console.log(this.$route.path);

页面重新加载 / 重新渲染页面

JavaScript Code复制内容到剪贴板

this.$router.replace('user/index');

美化路由,将#号去掉,路由开始history模式:

这里的base表示请求的url根路径的配置

JavaScript Code复制内容到剪贴板

exportdefaultnewRouter({

mode: 'history',

base:'/test/',

同一个路由,不同参数跳转,页面无变化的解决方法:

JavaScript Code复制内容到剪贴板

mounted:function() {

this.init();

},

watch: {

'$route'(to, from) {

//刷新参数放到这里里面去触发就可以刷新相同界面了

this.init(this.$route.path);

}

},

methods: {

init(urlStr) {

if(urlStr){

let urlStrArr = urlStr.split('/');

this.lessonId = urlStrArr[urlStrArr.length - 2];

this.playerShow =false;

}

关于跳转路由,受前后浏览页面影响,页面总会跑到中间或其他浏览位置:

JavaScript Code复制内容到剪贴板

router.beforeEach((to, from, next) => {

window.scrollTo(0, 0);

next();

})

在main.js中应该是用import引入的router,在引入router之后配置即可

设置将要去往的路由匹配:

JavaScript Code复制内容到剪贴板

constpaths = [

"userGuide",

"userGuide01",

"userGuide02",

"userGuide03",

"userGuide04",

]

// 将要前往的页面中,需要从头开始显示,不记录中间位置

router.beforeEach((to, from, next) => {

if(global.contains(paths,to.name)){

window.scrollTo(0, 0);

}

next();

})

JavaScript Code复制内容到剪贴板

contains(arr, obj) {

// 当前值 是否在指定数组内

vari = arr.length;

while(i--) {

// console.log(typeof(arr[i]));

// console.log(typeof(obj));

if(arr[i] === obj) {

returntrue;

}

}

returnfalse;

},

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值