单击时Vue路由到详细信息组件

Posted

技术标签:

【中文标题】单击时Vue路由到详细信息组件【英文标题】:Vue route to details component on click 【发布时间】:2021-05-01 03:44:55 【问题描述】:

我正在做一个后端用 php 构建,前端用 VUE 构建的项目。在我的项目中,我目前正在显示订单列表(通过对 API 的 get 请求以 JSON 形式接收),每当我单击列表中的订单时,我都想打开该订单的详细信息页面。所以我需要推动当前的订单通过。在 Angular 中,我使用了类似“this.router.navigate(['/orders', order.id]);”的东西,但我现在似乎无法让它工作。

我的 html

<tr v-for="(order, index) in orders" @click="onOrderClick(order)"
                            v-bind:class="index % 2 === 0 ? 'bg-white' : 'bg-gray-50'">
                            <td class="px-6 py-4 whitespace-nowrap text-sm text-gray-500">
                                 order.id 
                            </td>
                            <td class="px-6 py-4 whitespace-nowrap text-sm font-medium text-gray-900">
                                 order.deliveryName 
                            </td>

我测试了这个方法,它确实给了我正确的顺序:

onOrderClick: function (order) 
        //TODO::navigate to order/$id
        console.log('clicked', order.id)
    ,

如何将此订单传递给新组件并在其中显示订单字段?我似乎无法访问 this.$router。 (我的项目也使用惯性)。非常感谢您的帮助!

【问题讨论】:

【参考方案1】:

您可以使用 push 方法将该 id 作为参数传递给您的路由:

this.$router.push(`/orders/$order.id`)

【讨论】:

【参考方案2】:

由于该项目部分是在 php 中构建的,因此我有点困惑如何去做。 在我的 app.js 中,我刚刚创建了一个新的 vue 路由:

const router = new VueRouter(
mode: 'history',
routes: [
    
        path: '/order/$order.id',
        name: 'order',
        component: OrderDetails,
        props: true,
    ,
],
);

new Vue(
    render: (h) =>
        h(InertiaApp, 
            props: 
                initialPage: JSON.parse(app.dataset.page),
                resolveComponent: (name) => require(`./Pages/$name`).default,
            ,
        ),
    router,
).$mount(app);

我推送到路由器的方法:

onOrderClick: function (order) 
        console.log('clicked', order.id)
        this.$router.push(`/order/$order.id`);
    ,

目前,每当我单击订单时,只有 url 更改为以下内容:

我现在如何以订单作为道具来渲染组件。 我需要在 php routes/web.php 中定义路由来渲染它吗?

【讨论】:

以上是关于单击时Vue路由到详细信息组件的主要内容,如果未能解决你的问题,请参考以下文章

vue 如何获取路由详细内容信息

如何替换路由器出口角4路由中的整个页面?

单击图像时路由到另一个组件和页面reactjs

如何使用来自 json 文件的 vue-router 的用户 ID 检查特定的用户详细信息组件?

带有路由器的 Vue 模态

Vue Router 无法正常工作并添加了 #