【发布时间】:2019-11-11 04:05:58
【问题描述】:
我有控制器“SomethingController”、模型“ValueModel”和视图“Show.blade.php”以及带有组件“vue-component”的 vue
现在我想从 SomethingController 到 Show.balde.php 获取发送值(我从模型“ValueModel”获得,并且值是 JSON 格式),这将包括 vue “vue 组件”。最后,我想从控制器中获取vue中的价值。
我知道如何将值从控制器发送到视图。当值在字符串中时,我已使用 props 将其发送到 vue。但我无法将 JSON 值从 prop 发送到 vue。
控制器
//SomethingController.php
class SomethingControllerextends Controller
{
public function index()
{
$e = ValueModel::get();
$e = json_encode($e->toArray());
return view('pages.Show')->with('e', $e);
}
}
查看
//Show.blade.php
<div class="app">
<vue-component data={!!$e!!}></vue-component>
</div>
Vue
//SomethingController.php
<script>
export default {
props: ['data'],
data(){
return{
d : this.data,
}
},
beforeCreate(){
console.log('helllo');
console.log(d)
},
}
</script>
令我惊讶的是,我正在将数据打印在窗口上。在窗口上打印值后,函数 beforeCreate() 中的操作不起作用。
如图所示,数据正在打印在从控制器发送的窗口上,因为我想要 vue 中的数据。我也想知道为什么要打印。
从控制器返回的字符串一切正常
【问题讨论】:
-
我认为缺少引号:data ="{!! $e !!}"
-
我测试了各种场景,没有运气重现错误。在我的系统上一切正常。检查json本身是否没有问题。尝试传递一个转换为 json 的简单数组。
-
@PeterMatisko 你能告诉我你的代码吗?
-
我得到了答案,这里必须使用单引号。数据 = '{!!$e!!}'。这是因为 $e 中的数据有双引号。例如:[{"country":"Alwaysland","zip":"0023"},{"country":"Neverland","zip":"00111"}]。感谢您的帮助!
-
很高兴您解决了这个问题!我用两种类型的引号都试过了,它仍然有效。无论如何,祝你好运!