Symfony2 バンドル内で AngularJS 1.4 アプリケーションを開発しています。Symfony は「バックエンド」(API) を提供し、Angular はフロントエンド (もちろん) を提供します。
私は新しいルーターを使用しており、いくつかのガイドとベスト プラクティスの例で提案されているコンポーネント駆動のフォルダー アプローチに固執しています。しかし、gulp を使用して JavaScript をビルドし、完全なビルド ファイルのみを含めるため、Angular コントローラーがテンプレートを見つけられないという問題があります。
私が好きではない私の解決策をお見せします:
(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];
});
}
}());
Angular コードを記述しsrc/myBundle/Resources/js/
、gulp によって最終ビルドが配置src/myBundle/Resources/public/
され、Angular アプリを保持する Twig テンプレートで使用できるようになります。
私が現在行っていることは、基本的に、コンポーネントのテンプレートを、それらが属する場所ではなく (src/myBundle/Resources/js/components/dashboard/
ダッシュボードの例の場合) に配置することsrc/myBundle/Resources/public/templates
です。
を介して、テンプレートが別の場所にあることをルーターに伝える必要があります$componentLoaderProvider.setTemplateMapping()
。
2 つの質問があります。
- このテンプレートの場所の問題をよりエレガントな方法で解決できますか?
AppController
テンプレートの場所をルータに直接( で)伝えることはできますか。