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

时间:2015-02-16 19:14:01

标签: php angularjs laravel blade laravel-5

我正在尝试使用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'...

4 个答案:

答案 0 :(得分:47)

最简单的方法是在Angular代码前面使用@:

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

source

答案 1 :(得分:4)

在进行与Blade(扩展刀片,更改标记等)有关的更改时,请务必删除缓存的视图。

他们位于storage/framework/views

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

如果你想要更实用的东西,你可以创建一个命令来做到这一点。像this one

一样

答案 2 :(得分:4)

Laravel&gt; = 5.3

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

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

如果您对Blade模板渲染没有做太多工作,请特别有用

答案 3 :(得分:0)

否则你修改角度语法...

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