laravel - 从数据库到JS再到Vue

标签 laravel laravel-blade vue.js

是否建议在内联脚本中将一些非敏感数据传递给 vue?

HTML

<script>
    var foo = <?php echo $foo ?>
</script>

Vue.js

new Vue({
    data: { 
        foo: foo 
    }
});

最佳答案

这可能有点固执己见,但我会避免在应用程序中使用像这样的全局变量。相反,我会利用 HTML5 data- 属性并在其中存储前端所需的有用数据。

你可以这样做:

<body data-my-thing='{"foo": "bar", "baz": true}'>

上面的示例使用 JSON,我通常做的是在 Controller 或 View 编辑器中使用 json_encode 并像这样回显字符串(因为我们在这里使用 Balde,JSON自动转义):

<body data-my-thing='{{ $myJson }}'>

如果您只是使用纯 PHP,那么您应该像这样转义 JSON:

<body data-my-thing='<?=htmlspecialchars($myJson) ?>'>

当然,您不需要 JSON,如果更合适,您可以在其中存储纯字符串或数字。这取决于您的应用程序的需求。

要从数据属性中获取值,您只需使用以下 JavaScript:

document.body.getAttribute('data-my-thing');

如果您使用过 JSON,请不要忘记对其进行解码!

JSON.parse(document.body.getAttribute('data-my-thing'));

关于laravel - 从数据库到JS再到Vue,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36930094/

相关文章:

php - 如果关系不存在,则为默认值

php - laravel sendFailedLoginResponse() 覆盖

javascript - 获取 Laravel Controller 中的 Js 值

javascript - Vee Validate 需要两个字段之一

css - 无论如何要去除阴影,或强制 vuetify 菜单与屏幕左侧完全对齐?

laravel - 如何将某个模型的关系用 Inertia::render 显示在表格中?

php - Laravel 5.4 事件广播不适用于 vuejs

php - 如何修复 Laravel Nova 中的 `Undefined property: Illuminate\View\Factory::$iteration` 错误

javascript - 打开 Bootstrap 模式时如何调用函数?

php - Vue.js 2.0 无法编译模板