在Laravel的blade中从控制器分配对象数组给JS



我有一个对象数组如下Array ( [0] => stdClass Object ( [id] => 14 [content] => সংবাদ [start] => 2022-10-17 00:00:00 ) [1] => stdClass Object ( [id] => 15 [content] => সংবাদ [start] => 2022-10-17 00:00:00 ) [2] => stdClass Object ( [id] => 11 [content] => সংবাদ [start] => 2022-09-28 00:00:00 ) [3] => stdClass Object ( [id] => 12 [content] => সংবাদ [start] => 2022-09-28 00:00:00 ) [4] => stdClass Object ( [id] => 1 [content] => সংবাদ [start] => 2022-09-27 00:00:00 ) )

我已经从控制器传递,并希望在刀片文件的脚本中分配。最终的js应该是这样的

var items = new vis.DataSet([
{id: 1, content: 'item 1', start: '2014-04-20'},
{id: 2, content: 'item 2', start: '2014-04-14'},
{id: 3, content: 'item 3', start: '2014-04-18'},
]);

我试过了。

var items = new vis.DataSet({{$timeline}});

但是它正在通过一个错误

htmlspecialchars(): Argument #1 ($string) must be of type string, array given

我错过了什么。请帮助。由于

根据您的错误使用:{!! $timeline !!},这强制Blade不转义传递的值。可能值在JS中进行时间轴编码和解码。

你只需要在返回它之前对它进行json编码。

var items = new vis.DataSet(@json($timeline));

var items = new vis.DataSet({!! json_encode($timeline) !!});

最新更新