在Laravel Blade的花括号中连接JavaScript变量

7

我希望在Blade的{{ 大括号 }}中拼接JavaScript变量,如下所示:

目前:

ajax: "{{ route(api.colors) }},"

我想要的是:

var page='colors';
...
ajax: "{{ route(api."+page+") }},"

这可行吗?


你可以像给一个HTML元素或一个隐藏的HTML元素分配数据属性一样做一些事情,其中你传递路由(除非它包含敏感信息)。然后在你的Javascript中将其作为字符串访问。 - darthaditya
我有一个隐藏的输入框,但我想动态地传递它的值。 - CairoCoder
你所传递的路由是否取决于用户交互? - darthaditya
3个回答

11

由于花括号是在服务器端呈现且Javascript在客户端运行,因此您无法直接这样做。您可以在路线中放置占位符,然后在Javascript代码中替换此部分。就像这样:

// Imagine the `api.page` route value is `/controller/{page}`:
ajax: "{{ route(api.page) }}".replace("{page}", page);

那是一种非常聪明的做法。+1 - darthaditya
好的,我尝试了这个ajax: "{{ route('api.items') }}".replace("{items}", 'colors') ,但它不起作用,仍然指向旧路线。 - CairoCoder
但是你的渲染路由中是否包含字符串{items} - Jerodev
@Jerodev 是的,它包含 {items}。 - CairoCoder
清晰而巧妙的方式来完成它。毫无疑问。太棒了,伙计! - Marcello Marino

0

你可以使用ziggy库

它有一个帮助函数route(route_name),你可以轻松地用于这个目的。


0
你可以尝试这段代码,它对我有效。
 var id = $('#user_id').val();
 console.log(id);   
 ajax: "{{ URL::to('/meme') }}/poster/"+id+"",

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接