我想将数据从我的Controller传递到处理Google条形图的JavaScript。
$tmp = 6;
return view('pages.template', ['tmp' => $tmp]);
来自我的template.blade.php
我称之为谷歌图表
<div id="chart_div"></div>
.js文件:
var tmp = 6;
var tmp2 = parseInt('{!! $tmp !!}');
var data = google.visualization.arrayToDataTable([
['comment1', 'comment2'],
["- 6 days", tmp],
["- 5 days", tmp2],
["- 4 days", 31],
["- 3 days", 12],
["- 2 days", 10],
["- 1 day", 3],
["today", 4]
但是应该显示我的变量。
如何解决此问题?
答案 0 :(得分:2)
只需替换:
tempObject["data"] = tempDataArray;
dataArray.push(tempObject);
});
通过:
var tmp2 = parseInt('{!! $tmp !!}');
它应该有用。
答案 1 :(得分:0)
您正尝试在 JS 文件中使用 Blade 语法。为了使其工作,此文件需要由Blade编译器处理。这意味着您不需要直接在您的网站中包含JS文件,而是需要包含一个将由Laravel处理并输出Javascript代码的URL。这是可能的,但它通常是一个糟糕的选择。而不是直接从服务器获取轻量级JS文件,Laravel需要处理附加请求。
您需要做的是:
创建
的控制器操作class JavascriptController extends Controller {
public function javascript() {
$tmp = 6;
return view('javascript', ['tmp' => $tmp]);
}
}
在 routes.php
中添加指向该操作的路线Route::get('/javascript', 'JavascriptController@javascript');
不包括原始Javascript文件,而是包含将执行此控制器操作的URL
<script src="{{route(javascript)}}"></script>
答案 2 :(得分:0)
这对我有用
<script type="text/javascript">
var tmp = {!! json_encode($tmp->toArray()) !!};
console.log(tmp);
</script>
在您的控制器中,您可以执行以下操作
public function index()
{
$tmp = Tmp::get();
return view('tmp.index', compact('tmp'));
}
答案 3 :(得分:-1)
变量$tmp
似乎未在.js
文件中成功解析。为什么不将.js
文件中的代码放入template.blade.php
?