Javascript::put() 或 return view('index', compact($data))

Javascript::put() or return view('index', compact($data))

请查看我的控制器

    class myController extends Controller
    {
      $markets = Market::all();
      \JavaScript::put([
         'markets' => $markets,
      ]);

      return view('test.index');
    }

使用这种方法,我可以在 markets 变量中获取 angularjs 文件中的所有市场。

我看到了类似下面的内容

    class myController extends Controller
    {
      $markets = Market::all();
      return view('test.index', compact($markets));
    }

我更喜欢哪一个?两者的优点是什么?两者有什么区别?

第一种方法: 如果您想从 laravel 控制器方法定义 javascript 变量,这将很有用。然后你可以直接使用你的变量到 javascript.

console.log(markets);

但问题是您不能对该变量调用 PHP 或 laravel 函数。

第二种方法: 它只是常规的 PHP 变量声明并将变量传递给 blade 模板。您可以在其上调用任何 php 或 laravel 函数。但它在 javascript 中不可用。 如果你想让它可用。

var markets = "{{ $markets }}";
console.log(markets);

两者各有利弊。