是否可以使用来自JSON休息服务的数据配置AngularJS路由?
基本上我想做的是使用相同的数据来生成菜单指令和$ routeProvider
module.config()不接受注入的服务,而module.run()似乎与基于promise的数据混合不好。
var routeData = {
routes :
[
{
'routeUrl' : '/page1',
'title' : 'A home for Pizza',
'templateUrl' : '/Views/page1.html',
'controller' : 'AppCtrl'
},
{
'routeUrl' : '/page2',
'title' : 'Some YouTube video',
'templateUrl' : '/Views/page2.html',
'controller' : 'AppCtrl'
},
{
'routeUrl' : '/page3',
'title' : 'this is page 3',
'templateUrl' : '/Views/page3.html',
'controller' : 'AppCtrl'
}
],
defaultRoute : "/page1"
};
overviewApp.config(['$routeProvider', function ($routeProvider) {
var x, current;
for (x in routeData.routes) {
current = routeData.routes[x];
$routeProvider.when(
current.routeUrl,
{
templateUrl: current.templateUrl,
controller: current.controller
}
);
}
$routeProvider.otherwise({
redirectTo: routeData.defaultRoute
});
}]);
答案 0 :(得分:2)
如果您想访问配置阶段通常不可用的服务,请参阅angular service available at configuration phase。或者,您还有其他选择:
routeData
发出XHR请求。您可以使用:
$http
并提出请求。这个迷你应用程序与您的主要Angular应用程序是分开的。见Initialize AngularJS service with asynchronous data。让您的服务器端在Angular执行之前检索并提供routeData
。
<script src="//routeData.js"></script>
<script src="//angular.js"></script>