将AngularJS数据传递给Laravel生成的URL

时间:2015-05-23 21:49:33

标签: php angularjs laravel blade

我正在构建一个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门面

中回显角度数据

1 个答案:

答案 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>