Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angularjs 从json文件/http创建状态_Angularjs_Angular Ui Router - Fatal编程技术网

Angularjs 从json文件/http创建状态

Angularjs 从json文件/http创建状态,angularjs,angular-ui-router,Angularjs,Angular Ui Router,我有一个后端,它生成一个json文件,其中包含关于最重要页面的信息。我想加载这个json文件,并根据文件中的数据构建相应的状态。我不能将$stateProvider注入.run或.controller,也不能将$http注入.config,所以我觉得有点迷茫 所以问题是。如何加载json文件、遍历数据并基于这些数据构建状态 快速编辑:如果我没有提供必要的信息,请告诉我,我会尝试改进这个问题。我试图解决一个类似的问题,并创建了UI路由器附加“未来状态”。未来的状态试图解决其他问题,例如使用Requ

我有一个后端,它生成一个json文件,其中包含关于最重要页面的信息。我想加载这个json文件,并根据文件中的数据构建相应的状态。我不能将$stateProvider注入.run或.controller,也不能将$http注入.config,所以我觉得有点迷茫

所以问题是。如何加载json文件、遍历数据并基于这些数据构建状态


快速编辑:如果我没有提供必要的信息,请告诉我,我会尝试改进这个问题。

我试图解决一个类似的问题,并创建了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>"
  }
]