我有一个带有CMS的angular.js应用程序(在S3上)。我希望能够创建一个完整的页面,包括来自CMS的路由,而无需推送新代码并重新部署应用程序。有办法做到这一点吗?
据我所知,$ routeProvider在.config块中初始化,只允许提供者注入。另外从我可以告诉我不能在.config块中使用服务,这基本上消除了引用get请求以从S3文件生成路由的可能性。
我是angular.js的新人,但我觉得我忽略了一些东西。如果有人能指出我正确的方向,我将非常感激!提前谢谢!
答案 0 :(得分:0)
我不确定是否有更多的“Angular”方式来解决这个问题,但这就是我所做的。
1)我没有将值存储为.json,而是创建了一个.js文件,我在其中设置了一个等于路径数据的变量。
2)我在Angular.js应用程序的布局中使用了一个脚本标记,用于导入我存储在S3上的.js文件。
3)在配置块中,我创建了所需的状态,如下所示:
@newco.config(['$provide', '$locationProvider', '$httpProvider', '$stateProvider', '$urlRouterProvider',
($provide, $locationProvider, $httpProvider, $stateProvider, $urlRouterProvider) ->
$locationProvider.html5Mode(false);
$locationProvider.hashPrefix('!');
$urlRouterProvider.otherwise('/404')
_.each routes.routes, (route) ->
$stateProvider
.state(route, {
url: if route == '/' then route else "/" + route,
templateUrl: '/pages/home/new_index',
controller: 'NewHomeController',
resolve:{
pageData: (cmsService) ->
cmsService.pageData route
basePlan: -> 'default'
customerCategoryId: -> 'domestic'
}
})
$stateProvider
.state('/404', {
templateUrl: '404.html'
})
])
如果有更好的方法可以做到这一点,我肯定会有兴趣听到它,因为我几乎觉得我的解决方案是'hackey',但我找不到更合适的解决方案,因为路线是在配置块禁止使用服务。 如果有人有更好的想法或理由我的解决方案不理想,我很乐意听到。