我正在 Symfony2 Bundle 中开发 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()
.
我有两个问题:
- 我可以用更优雅的方式解决这个模板位置问题吗?
- 我可以直接(在 中
AppController
)告诉路由器模板在哪里吗?