我正在构建一个Laravel和AngularJS应用程序。我使用Angular将HTTP GET请求发送到Laravel路由并在将其写入HTML之前获取JSON数据。我正在使用Laravel进行路由,因为Angular只出现在几页上。
我的网站有一个工作列表,通过Angular一次显示5个。每个作业的标题旁边都有一个“发送消息”选项。我视图中的代码是这样的:
<ul>
<li ng-repeat="job in main.jobs">
<a href="@{{ job.slug }}">@{{ job.title }}</a> -
<a href="{{ URL::route('sendmessage', ["@{{ job.slug }}"]) }}">Send a Message</a>
</li>
</ul>
数据呈现完美但是我不能使用Angular的URL::route
函数来渲染路径URL,并以job.slug作为参数。
我的routes.php文件如下:
Route::get('jobs/{slug}/messages/create', [
'as' => 'sendmessage',
'uses' => 'MessageController@create'
]);
请注意,这是一个刀片文件,我使用{{ }}
之前的@来渲染Angular。
我的考试题目:如何使用刀片在URL::route
门面
答案 0 :(得分:1)
您可以设置自定义AngularJS花括号以防止与Blade模板引擎发生冲突:
var app = angular.module('app', [])
.config(function($interpolateProvider) {
// To prevent the conflict of `{{` and `}}` symbols
// between Blade template engine and AngularJS templating we need
// to use different symbols for AngularJS.
$interpolateProvider.startSymbol('<%=');
$interpolateProvider.endSymbol('%>');
});
我建议使用<%= %>
,因为它是常用的构造,您可以在Underscore templates中找到它。
之后,您的代码将如下所示:
<ul>
<li ng-repeat="job in main.jobs">
<a href="<%= job.slug %>"><%= job.title %></a> -
<a href="{{ URL::route('sendmessage', ["@{{ job.slug }}"]) }}">Send a Message</a>
</li>
</ul>