如何在AngularJS中配置(或运行?)期间使用$ resource配置$ stateProvider,$ urlRouterProvider

时间:2014-02-09 01:21:06

标签: angularjs angular-ui angular-ui-router

我想基于从JSON资源读取的一些配置,“动态”设置Angular UI路由器$ urlRouterProvider $ stateProvider。我试过了:

.config(function ($stateProvider, $urlRouterProvider, $resource) {

但这不起作用(“未捕获的错误:未知的提供者:来自mui.jsAngularAddressbookApp的$资源”),因为(我明白)“你只能将提供者(非实例)注入配置块”。所以我试过了:

.run(function ($stateProvider, $urlRouterProvider, $resource) {

但是这也无法工作(“未捕获的错误:未知的提供者:$ stateProviderProvider< - $ stateProvider”)因为(我再次理解原理)“你只能将实例(不是提供者)注入到运行块中”。

我通过使用jQuery.getJSON而不是$ resource来攻击/解决它,但当然“它不是AngularJS方式”(它有任何真正的缺点吗?)。

对此有什么“适当的”解决方案?

1 个答案:

答案 0 :(得分:0)

我还没有完整的答案,但已设法在配置时访问ui-router。积分主要发送给另一个github问题记者https://github.com/angular-ui/ui-router/pull/120我对如何在运行时访问配置的要点也在线程中。

此时您只能添加路线,如果您尝试多次添加路线,则会引发错误。抱歉,CoffeeScript。目前我仍然在寻找一种异步加载路径的方法。

angular.module('app').provider 'RouteConfig',
  ['$stateProvider', ($stateProvider) ->
    # this will configure the routes from the received json
    # using $stateProvider.state() like in app.config
    configurator = ($http) ->
      console.log $stateProvider
    updateRoutes: ->
      configService.get().then (conf) ->
        # add routes here from 'conf'

    @$get = ['configService', (configService, $http) ->
      new configurator(configService, $http)
   ]
  return
 ]