如何将php对象或数组传递给Vue prop(而不是Blade)?

ovfsdjhp  于 2023-01-26  发布在  Vue.js
关注(0)|答案(1)|浏览(113)

这不是Blade,它只是一个包含我的vue组件的inline模板的普通php文件,所以我无法访问典型的laravel/blade {!!!!}简写。
这是一个旧的Codeigniter项目,我正在迁移到Vue作为前端,他们将数据带到包含在php文件中的普通js脚本的方式如下:

var a = <?= json_encode($frontLanguage) ?>;
console.log(a);

其输出:

我在Vue上做了类似的尝试

<vue-component a-string="<?='something string'?>" :language='<?=json_encode($frontLanguage)?>' inline-template>

字符串就像字符串一样工作,但是:language会破坏整个组件,尝试不使用json_encode,尝试使用双引号和单引号,使用和不使用冒号等,但都无济于事。
在对象中,我看到了html字符,所以这可能是原因?我不完全确定什么是正确的方式将这个对象作为Vue的 prop 使用?
先谢了

cidc1ykv

cidc1ykv1#

在这里给予大家一个完整的答案:出现问题的原因是,你要么需要使用",要么需要使用'作为你的html属性,这就导致了一个问题,你可能在json输出中同时使用这两个属性。
为了避免这种情况,您需要在json字符串中对html实体进行编码,例如

<vue-component :language="<?php htmlentities(json_encode($frontLanguage), ENT_QUOTES) ?>" />

相关问题