【发布时间】:2013-05-14 07:20:45
【问题描述】:
假设我有一段 jQuery javascript,它在加载时绑定到 div 并在该 div 中动态定义 img。像这样的:
$(document).ready(function() {
$("#container").html("<img href='/images/myimage.jpg/>');
});
如果我在 Laravel 视图中使用这个内联,我可以使用 HTML::image() 和 Blade 模板来指定图像的位置。像这样的:
$(document).ready(function() {
$("#container").html("{{ HTML::image('images/myimage.jpg', 'My image') }}");
});
如果我要获取那段 javascript,而不是将其内联在视图中,而是将其放在单独的 .js 文件中,例如 public/js/image.js,我可以让 Laravel 将其作为资产加载;
Asset::add('image.js', 'js/image.js');
但是,由于它现在只被视为资产,因此 Laravel PHP 和 Blade 模板代码都没有被处理,所以我们从字面上得到字符串 {{ HTML::image('images/myimage.jpg', 'My image') }} 在生成的 html 中,而不是模板化的值。
这样的事情有什么好的方法吗?
【问题讨论】:
-
如果不将其发送到服务器,您就可以通过 Blade 解析器运行它并取回已解析的字符串。或者您可以只使用原始 HTML,如您在第一个代码示例中所示。
-
你只是要求这个附加基本 URL 吗?
-
我只是为示例选择了细节。一种普遍接受的技术会很有用。
-
一般情况下 - 不要混合使用 php 和 JS。如果您需要将值传递给 JS 脚本,要么将其作为 HTML 中的元/链接标签输出,要么将一些 javascript 写入执行此类配置的页面 - 就像谷歌分析可能一样。
标签: php javascript jquery laravel blade