如何在ngroute templateUrl函数中注入$ http?

时间:2014-09-10 17:58:09

标签: javascript angularjs ngroute

我的Web应用程序有很多视图(模板),并且没有静态模式只能从路由参数组成templateUrl。 考虑到更新路由的灵活性,我将路由表存储在SQL服务器中,并创建RESTful Web服务以检索和更新路由模板记录。 但是,我发现在配置短语期间无法在AngularJS中调用$ http和$ rootScope。

我理解.config在AngularJS中的.run之前发生。在配置中,我们只能访问常量和提供者。 但由于我使用的是templateUrl函数,因此在运行时调用函数体。 我想知道是否有任何方法可以在我的templateUrl函数中注入$ http和$ rootScope,这将在运行短语中执行...

angular.module('app', ['ngRoute']).config(['$routeProvider', 

        function ($routeProvider) {

            $routeProvider.
                    when('/:param1/:param2/:param3',
                    { templateUrl: function(element){
                      // $http GET routing table from RESTful API
                      // store the table to $rootScope
                      // look up table with param1+param2+param3 as key, get template url 
                      return templateUrlFromTable ;
                    }}).

                    otherwise({redirectTo: '/'});

        }])

我对AngularJS很新,任何其他建议也欢迎。 另外,如果我的理解是错误的,请纠正我。 感谢。

1 个答案:

答案 0 :(得分:0)

此线程讨论了动态路由的一些替代方案:

AngularJS dynamic routing

其他替代解决方案是在服务器端呈现路由配置,就像本文中所解释的那样:

http://odetocode.com/blogs/scott/archive/2014/03/24/dynamic-routes-with-angularjs.aspx