javascript - 为 JavaScript 转义 Laravel Blade @include 内容
问题描述
我正在使用 Laravel 中的动态表单。
我已经将可重用的表单位抽象为带有一些 JS 逻辑的,以根据用户添加另一个小部件时传递的 id@include
来处理递增的表单id。name=[]
当用户单击以将另一个小部件添加到表单时,我想简单地使用递增的计数器调用包含 -这一切都已排序- 但是,@include
对于 JavaScript 的输出并不友好。
环顾四周,我发现了以下内容:
https://laracasts.com/discuss/channels/general-discussion/blade-content-escaping
...似乎扩展刀片以创建自定义指令可能是答案:
https://laravel.com/docs/5.7/blade#extending-blade
我的问题是,我能不能@include
用自定义指令来包装一个,比如说@js(@include())
- 或者 - 这根本不是要走的路吗?
这是我整个项目中这种结构的唯一实例,所以我没有使用 VUE。
谢谢你。
编辑:
我试着把一个指令放在一起
Blade::directive('js', function ($expression) {
return str_replace(array(' ', "\n", "\t", "\r"), '', $expression);
});
问题是@include
不评估......兔子洞
解决方案
您可能不会直接将 Blade 模板输出分配给 JavaScript 变量,但您可以使 Blade 输出不可见 ( display: none
) 并使用 Javascript 引用它。
IE而不是:
var JsElement = @include('blade.template', $data)
您可以在刀片页面中执行此操作:
<div id="template-element" style="display: none">
@include('blade.template', $data)
</div>
然后通过javascript引用并克隆它:
var JsElement = document.getElementById('template-element');
var clonedElement = JsElement.cloneNode()
推荐阅读
- javascript - 使用 Javascript 动态更改表和行的背景颜色
- java - 为什么这个抛出异常的方法在调用时不必在 try catch 块中?
- linux - 在 Docker 中为 Linux 主机预留 CPU 和内存
- javascript - 使用异步调用设计函数回调
- oracle - 电子邮件消息中的 sql 语句 utl_mail.send
- firebase - Firebase 实时数据库写入规则
- regex - 具有任何大小写变化的字符串的正则表达式
- date - 维度表中日期类型属性的哪种数据类型,包括开始和结束日期?
- python - 如何从其他脚本访问在服务器上运行的终端 Python 进程
- javascript - 延迟加载模式窗口,模式中的图像不显示