【发布时间】:2018-04-23 02:59:36
【问题描述】:
- 用几个 Vue 组件构建一个 Laravel 应用程序
- 想要使用 props 将 PHP 数组传递给 Vue 组件
这是一个这样的 PHP 数组的例子:
["Foo" => 100, "Bar" => 50]
太好了。这是我将它们传递给 Chart 组件的尝试:
<Chart points="{!! json_encode($points) !!}"></Chart>
这看起来不错,但是在使用 json_encode() 时,$points 数组中的字符串(Foo 和 Bar)被封装为 "(双引号)。这意味着每当数组中出现第一个字符串时,浏览器都会认为" 意味着关闭 points 属性。
这是您在浏览器中看到的内容:
<Chart points="{">Foo":100,"Bar":50}"</Chart>
我该怎么做?我已经为此苦苦挣扎了好几个小时了,我无法解决这个问题。
- 不能使用 "(双引号),因为浏览器会将其解释为属性的结束引号并弄乱 HTML
- 不能使用 '(单引号),因为那是无效的 JSON(而且 json_encode 不支持它)
【问题讨论】:
-
["Foo": 100, "Bar": 50]不是 PHP 数组。 -
@DarraghEnright 好地方,已修复。
-
你能试试
:points='{!! json_encode($points) !!}'吗?另一种方法是将数组设置到您的 Vue / 组件data,例如data: { points: {!! json_encode($points) !!} }并使用:points="points" -
points='{!! json_encode($points) !!}'有效,但我不确定这是否被认为是无效或错误的 HTML? -
@D.vanDrunen 如果任何值包含单引号,它可能会失败
标签: php arrays json laravel vue.js