【问题标题】:How to pass laravel variable in vuejs router link?如何在 vuejs 路由器链接中传递 laravel 变量?
【发布时间】:2020-04-07 07:42:58
【问题描述】:

我正在尝试在 Vuejs 路由器链接中传递 laravel 变量,但它不起作用。如何在路由器链接中传递用户 ID?

<ul>

    @foreach($children as $child)

        <li>
            @if($child->user_type == 'user')

                <script>
                    var UserId = '{{ $child->id }}';
                </script>

                <router-link :to='"/dashboard/" + UserId' class="nav-link-text mb-1">
               {{ $child->user_name}}</router-link>

            @endif

        </li>

    @endforeach

</ul>

【问题讨论】:

标签: javascript laravel vuejs2


【解决方案1】:

可以通过两种方式处理动态数据。

  1. 作为 URL 路径变量
  2. 作为查询参数
  3. 作为浏览器历史记录的参数(一种隐藏机制)

将数据作为 URL 路径变量或查询参数传递给组件

https://techformist.com/url-params-vue/

如果您想使用参数(一种隐藏机制)通过路由链接将动态数据传递给组件,请尝试此操作。

https://dev.to/aligoren/passing-data-to-a-router-link-in-vuejs-2cb0

希望这会有所帮助。

read more on Vue documentation: Dynamic Routing

【讨论】:

    【解决方案2】:

    请记住,您的刀片视图将始终在客户端上启动 Vue 应用程序之前构建、执行和完成,因此,就像 @Alec Joy 提到的在他的评论中,直接在链接中添加ID会更容易。

    您的刀片代码将最终生成:

    <ul>
        <li>
            <script>
                var UserId = '1';
            </script>
    
            <router-link :to='"/dashboard/" + UserId' class="nav-link-text mb-1">Bob</router-link>
    
        </li>
    </ul>
    

    在这种情况下,UserId 是多余的,因为您正在分配一个 Javascript 变量以在一个地方使用。在这种情况下,最好将用户 ID 从刀片文件硬编码到 routerlink 中。

    将您的刀片文件更改为:

    <ul>
    @foreach($children as $child)
        <li>
        @if($child->user_type == 'user')
            <router-link :to="/dashboard/{{ $child->id }}" class="nav-link-text mb-1">{{ $child->user_name}}</router-link>
        @endif
        </li>
    @endforeach
    </ul>
    

    【讨论】:

    • 它只是改变了在router-link中传递的id。我们可以强制组件还是刷新组件?
    • 我不确定你的意思。您可能需要扩展您期望实现的目标
    • 它仅更改 id,但不根据该 id 加载内容
    猜你喜欢
    • 2019-08-12
    • 2015-03-16
    • 2018-09-23
    • 1970-01-01
    • 2020-01-23
    • 1970-01-01
    • 2020-08-07
    • 2015-01-06
    • 1970-01-01
    相关资源
    最近更新 更多