检查从laravel传递到vue的数据是否存在

时间:2019-11-19 03:15:36

标签: laravel vue.js laravel-blade

有时候,我需要将数据从控制器传递到视图,有时我不这样做! 但是,当没有数据传递时,我会收到此错误:

  

未定义变量:教程(查看:   /var/www/html/resources/views/home.blade.php)

无数据示例:

public function index()
{
    return view('home');
} 

包含数据的示例

public function tutorial()
{
    return view('home', ['tutorial' => 'Welcome to myproject, lets get started!!!']);
}

刀片:

beforeMount()
{
    let tutorial = {{ var_export($tutorial) }} // ERROR!!
    if (tutorial) {
        return
    }
    this.reloadData()
}

我认为我可以在索引函数中这样做:

public function index()
{
    return view('home', ['tutorial' => []);
}

但是它太恶心了!!无论如何,我的Vue中是否存在从laravel传递的数据的检查??

1 个答案:

答案 0 :(得分:1)

因为您不能仅将Laravel变量放入js。

解决问题的选项包括:

  1. 使用应用程序对数据执行api请求 组件安装完成后。
  2. 将数据附加到 使用刀片模板的Javascript上下文。

您可以执行以下操作:

<Home tutorial="{{ $tutorial }}"> <!-- make tutorial become to props -->
</Home>

在您的视图组件中:

Vue.component('Home', {
    props: [
        {
            name: 'tutorial',  // add this props
            default: '',
        }
    ],
    beforeMount()
    {
        if (this.tutorial) {   // use like this.tutorial
            return
        }
        this.reloadData()
    }
});