路由器链接参数中的斜线转换为%2F

问题描述 投票:0回答:1

我想传递参数的链接,但我在链接中得到的是 %2F ,而不是斜杠

我的路线

{
                path: 'folder/:name+',
                name: 'folder',

                component: () => import("./components/FolderComponent.vue"),
                beforeEnter: (to,from,next) => {
                    console.log(to)
                    var path = '';
                    if(Array.isArray(to.params.name)) {
                        path = to.params.name.join('/');
                    } else {
                        path = to.params.name;
                    }
                    axios.get('/api/file/folder/' + path).then(r => {
                            store.commit('set_folder', r.data.data[0]);
                            next();
                        })

                }

路由器链接

 <router-link :to="{name: 'folder', params: {name: folder.path}}" class="file-preview">

参考链接 href

javascript vue.js vue-router
1个回答
0
投票

您可以使用

encodeURIComponent()
对值进行编码,然后再将其传递到 URL 中:

<router-link :to="{ name: 'folder', params: { name: encodeURIComponent(folder.path) }}" class="file-preview">

然后,当您提取参数时,使用

decodeURIComponent()
解码该值并恢复原始值:

beforeEnter: (to, from, next) => {
    ...
    } else {
       ...
    }
    var decodedPath = decodeURIComponent(path);
    
    axios.get(
    ...
    );
}

© www.soinside.com 2019 - 2024. All rights reserved.