我想基于从JSON资源读取的一些配置,“动态”设置Angular UI路由器$ urlRouterProvider $ stateProvider。我试过了:
.config(function ($stateProvider, $urlRouterProvider, $resource) {
但这不起作用(“未捕获的错误:未知的提供者:来自mui.jsAngularAddressbookApp的$资源”),因为(我明白)“你只能将提供者(非实例)注入配置块”。所以我试过了:
.run(function ($stateProvider, $urlRouterProvider, $resource) {
但是这也无法工作(“未捕获的错误:未知的提供者:$ stateProviderProvider< - $ stateProvider”)因为(我再次理解原理)“你只能将实例(不是提供者)注入到运行块中”。
我通过使用jQuery.getJSON而不是$ resource来攻击/解决它,但当然“它不是AngularJS方式”(它有任何真正的缺点吗?)。
对此有什么“适当的”解决方案?
答案 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
]