2015-05-23 5 views
-2

Я в процессе создания приложения Laravel и AngularJS. Я использую Angular для отправки запросов HTTP GET на маршрут Laravel и получения данных JSON перед записью в HTML. Я использую Laravel для моей маршрутизации, поскольку Angular присутствует только на нескольких страницах.Передача данных AngularJS в Laravel сгенерированный URL

У меня есть список вакансий, которые отображаются 5 раз за раз, через Angular. Рядом с названием каждой работы есть опция «Отправить сообщение». Код на мой взгляд, как так:

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

данных делает отлично, однако я не могу использовать функцию URL::route с Угловое для визуализации URL маршрута с job.slug в качестве параметра.

Мой routes.php файл выглядит следующим образом:

Route::get('jobs/{slug}/messages/create', [ 
    'as' => 'sendmessage', 
    'uses' => '[email protected]' 
]); 

Примечание, как это файл лезвие, я использую @ перед {{ }} оказывать Угловое.

Мой вопрос экзамен: Как я могу использовать лезвие, чтобы эхо угловые данные в URL::route фасада

+1

не знаю, почему вам нужно на стороне сервера и на стороне шаблонизации клиент шаблонизации смешанные друг с другом. Кажется, это кошмар для поддержания. Также непонятно, какова ваша конкретная проблема: – charlietfl

+0

Вы пробовали использовать ng-href? – skh

+0

Я думаю, что обслуживание становится проблемой, если вы не структурировали свое приложение соответствующим образом. Я только хочу использовать Angular на нескольких страницах моего сайта разработки, прежде чем я надаю на производство через несколько месяцев –

ответ

1

Вы можете установить пользовательские AngularJS фигурные скобки, чтобы предотвратить конфликт с клинка шаблонизатор:

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> 
+1

Для справки также возможно обратное. Это означает, что вы можете переопределить теги Blade, например: 'Blade :: setEscapedContentTags ('[[', ']]');' и 'Blade :: setContentTags ('[!!', '!!]') ; '. Но из вопроса кажется очевидным, что лучшим решением здесь является изменение тегов с угловым шаблоном. – Bogdan

+0

Проблема не конфликтует. Проблема в том, как я могу эхо из угловых данных использовать лезвие? –

+0

@BarryBlade, что вы делаете неправильно, если хотите вывести угловые данные с помощью клинка. Другими словами, вы хотите эхо-данные на стороне клиента в фоновом режиме, это не имеет для меня никакого смысла. –

Смежные вопросы