Я разрабатываю приложение AngularJS 1.4 в комплекте Symfony2. Symfony предоставляет «бэкэнд» (API) и «Угловой интерфейс» (конечно).Лучшая практика с расположением шаблонов AngularJS в Symfony 2 с новым угловым маршрутизатором?
Я использую новый маршрутизатор и придерживаюсь подхода, основанного на использовании компонентов, предложенного несколькими руководствами и примерами лучшей практики. Но так как я строю свой JS с глотком и включаю только полные файлы Build, есть проблемы с угловыми контроллерами, которые не находят своих шаблонов.
я покажу вам мое решение, которое я не люблю:
(function() {
'use strict';
angular
.module('myModule', ['ngNewRouter', 'myModule.dashboard'])
.config(TemplateMapping)
.controller('AppController', AppController);
/* @ngInject */
function AppController ($router) {
$router.config([
{ path: '/', redirectTo: '/dashboard' },
{ path: '/dashboard', component: 'dashboard' }
]);
}
/* @ngInject */
function TemplateMapping($componentLoaderProvider) {
$componentLoaderProvider.setTemplateMapping(function (name) {
return {
'dashboard': '/bundles/mybundle/templates/dashboard/dashboard.html'
}[name];
});
}
}());
я пишу Угловой код в src/myBundle/Resources/js/
и глотке ставит окончательную сборку, чтобы src/myBundle/Resources/public/
Wich тогда доступен в Twig Шаблоне, который содержит угловое приложение ,
То, что я делаю прямо сейчас, в основном ставит шаблоны моих компонентов не там, где они принадлежат (это будет src/myBundle/Resources/js/components/dashboard/
для примера панели инструментов), а в src/myBundle/Resources/public/templates
.
Я должен сообщить маршрутизатору, что шаблон находится в другом месте по адресу $componentLoaderProvider.setTemplateMapping()
.
У меня есть два вопроса:
- Могу ли я решить эту проблему расположение шаблона более элегантный способ?
- Могу я сказать маршрутизатору напрямую (в
AppController
), где находится шаблон?
Спасибо за ваши мысли. Хотя это верно в определенных сценариях, где ваш внутренний API (например, symfony) и ваше внешнее приложение (например, AngularJS) являются двумя независимыми. В проекте, в котором рассматривался этот вопрос, мы начали с приложения Angular в составе приложения symfony. Но мы уже переконвертировали удаление всех Представлений, представленных symfony в пользу Angular, поэтому, возможно, ваш подход станет для нас более подходящим вариантом. Но в этом случае весь вопрос об Угловом шаблоне в Symfony не поднимается в первую очередь. :) – Daniel
Я редактировал вопрос, чтобы добавить пример с одним приложением. –