使用Laravel 5与AngularJS刀片标签冲突


Using Laravel 5 with AngularJS blade tag conflict

我正在尝试用Laravel 5设置Angular。

我试过在appServiceProvider:中做

public function boot()
{
    'Blade::setRawTags("[[", "]]");
    'Blade::setContentTags('<%', '%>'); // for variables and all things Blade
    'Blade::setEscapedContentTags('<%%', '%%>'); // for escaped data
}

带有:

<div>
  <input type="text" ng-model="yourName" placeholder="Enter a name here">
  <h1>Hello, {{ yourName }}!</h1>
</div>

但我得到了:

Use of undefined constant yourName - assumed 'yourName'...

实现这一点的最简单方法是简单地在Angular代码前面使用@:

 <div>
  <input type="text" ng-model="yourName" placeholder="Enter a name here">
  <h1>Hello, @{{ yourName }}!</h1>
</div>

在进行与Blade有关的更改(扩展Blade、更改标记等)时,请始终确保删除缓存的视图。

它们位于storage/framework/views

只需删除所有文件(.gitignore除外)

如果你想要更实用的东西,你可以创建一个命令来完成。像这个

Laravel>=5.3

虽然在括号前添加@仍然有效,但Laravel还包括了另一个方便的刀片实用程序,可以让你将整个块标记为原样:

@verbatim
<div>
    {{ ctl.variable1 }}
    {{ ctl.variable2 }}
</div>
@endverbatim

如果您对Blade模板渲染做得不多,则特别有用

否则,您将修改角度语法。。。

var sampleApp = angular.module('sampleApp', [], function($interpolateProvider) {
    $interpolateProvider.startSymbol('<%');
    $interpolateProvider.endSymbol('%>');
});