Angular.js从json文件创建路由

时间:2015-12-11 21:27:32

标签: angularjs amazon-s3 routing

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

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

我是angular.js的新人,但我觉得我忽略了一些东西。如果有人能指出我正确的方向,我将非常感激!提前谢谢!

1 个答案:

答案 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',但我找不到更合适的解决方案,因为路线是在配置块禁止使用服务。 如果有人有更好的想法或理由我的解决方案不理想,我很乐意听到。