- Building a Laravel app with a few Vue components
- Want to pass a PHP array onto a Vue component using props
Here's an example of such PHP array:
["Foo" => 100, "Bar" => 50]
Great. Here's my attempt at passing them onto the Chart component:
<Chart points="{!! json_encode($points) !!}"></Chart>
This looks fine, but the strings (Foo and Bar) inside the $points array get encapsulated with " (double quotes) when using json_encode(). This means that whenever the 1st string appears in the array, the browser thinks that the " is meant to close the points attribute.
Here's what you get to see in the browser:
<Chart points="{">Foo":100,"Bar":50}"</Chart>
How do I go about this? I have been struggling with this for hours now, and I can't wrap my head around it.
- Can't use " (double quotes) since the browser interprets it as the closing quote for an attribute and messes up the HTML
- Can't use ' (single quotes) since that's invalid JSON (and json_encode doesn't support it)
["Foo": 100, "Bar": 50]is not a PHP array.:points='{!! json_encode($points) !!}'? The alternative would be to set the array into your Vue / componentdata, egdata: { points: {!! json_encode($points) !!} }and use:points="points"points='{!! json_encode($points) !!}'works, however I'm uncertain if this is considered invalid or bad HTML?