Angularjs 从json文件/http创建状态
我有一个后端,它生成一个json文件,其中包含关于最重要页面的信息。我想加载这个json文件,并根据文件中的数据构建相应的状态。我不能将$stateProvider注入.run或.controller,也不能将$http注入.config,所以我觉得有点迷茫 所以问题是。如何加载json文件、遍历数据并基于这些数据构建状态Angularjs 从json文件/http创建状态,angularjs,angular-ui-router,Angularjs,Angular Ui Router,我有一个后端,它生成一个json文件,其中包含关于最重要页面的信息。我想加载这个json文件,并根据文件中的数据构建相应的状态。我不能将$stateProvider注入.run或.controller,也不能将$http注入.config,所以我觉得有点迷茫 所以问题是。如何加载json文件、遍历数据并基于这些数据构建状态 快速编辑:如果我没有提供必要的信息,请告诉我,我会尝试改进这个问题。我试图解决一个类似的问题,并创建了UI路由器附加“未来状态”。未来的状态试图解决其他问题,例如使用Requ
快速编辑:如果我没有提供必要的信息,请告诉我,我会尝试改进这个问题。我试图解决一个类似的问题,并创建了UI路由器附加“未来状态”。未来的状态试图解决其他问题,例如使用RequireJS延迟加载、整个卸载模块的占位符,以及通过书签URL路由到卸载占位符 下面是一个演示如何为您的用例使用未来状态的plunk: 我尝试使用stackoverflow代码段运行程序,但遇到了问题,因此这里是一个无法运行的代码粘贴 JS:
//代码在这里
var app=angular.module(“jsonstates”[“ct.ui.router.extras”]);
app.config(['$stateProvider','$futureStateProvider',
函数($sp,$fsp){
var futureStateResolve=函数($http){
返回$http.get(“states.json”)。然后(函数(响应){
angular.forEach(response.data,函数(状态){
$sp.state(state);
})
})
}
$fsp.addResolve(futureStateResolve);
console.log($fsp);
}]);
controller(“someCtrl”,function(){})
Html:
你好,普朗克!
Json:
[
{
“名称”:“顶部”,
“url”:“/顶部”,
“控制器”:“someCtrl”,
“模板”:“顶级状态”
},
{
“名称”:“嵌套”,
“父项”:“顶项”,
“url”:“/嵌套”,
“控制器”:“someCtrl”,
“模板”:“嵌套状态”
}
]
在加载未来状态之前直接访问一个状态时,这是否有效?示例website.com/nested如json中所示。是的,未来状态会延迟UI路由器的路由,直到所有的$fsp.addResolve
承诺都得到解决。这与我想要的非常接近,只是我需要使用templateURL,以便可以从$templateCache加载,而不是应用于template属性的内联html标记。我还可以使用视图将状态定义为抽象状态吗?如果您有任何想法,我可以使用您演示的内容来实现这一点,谢谢您的时间和耐心。我真的需要用上面的标准从json动态加载一个路由。你试过了吗?templateUrl应该可以工作。你可以在标准状态定义中声明的任何东西都可以在JSON中声明,除了函数
[
{
"name": "top",
"url": "/top",
"controller": "someCtrl",
"template": "<h1>top state</h1><div ui-view></div>"
},
{
"name": "nested",
"parent": "top",
"url": "/nested",
"controller": "someCtrl",
"template": "<h1>nested state</h1><div ui-view></div>"
}
]