Angular.js从json文件创建路由



我有一个带CMS的angular.js应用程序(在S3上)。我希望能够创建一个完整的页面,包括来自CMS的路由,而不必推送新代码和重新部署应用程序。有办法做到这一点吗?

据我所知,$routeProvider是在.config块中初始化的,该块只允许注入提供程序。此外,根据我所知,我不能在.config块中使用服务,这基本上消除了引用get请求从S3文件生成路由的可能性。

我是angular.js的新手,但我觉得我忽略了什么。如果有人能为我指明正确的方向,我将不胜感激!提前感谢!

我不确定是否有更"角度"的方法来解决这个问题,但以下是我所做的。

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'
      })
])

如果有更好的方法可以做到这一点,我当然会很感兴趣,因为我几乎觉得我的解决方案很"黑客",但我根本找不到更合适的解决方案,因为路由是在禁止使用服务的配置块中初始化的。如果有人有更好的想法或我的解决方案不理想的原因,我很乐意听到。

最新更新