angularjs – 根据配置配置UI路由器状态

前端之家收集整理的这篇文章主要介绍了angularjs – 根据配置配置UI路由器状态前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
有没有办法根据服务器端 JSON文件配置UI路由器状态.我不想避免对module.config(..)中的状态进行硬编码.

我首先想到的是具有可用状态映射数据的控制器,它可以调用$stateProvider.但是,我相信,控制器不能将提供者注入其中.

我想到的另一个选项是在angular之外有一个Javascript文件,它将状态配置数据放在某个全局变量中,以便从Module config函数中引用.

但是有更好的方法吗?

解决方法

我会说,通常有两种方法可以使用SERVER数据(JSON)来构建状态.

首先,我们可以使用$http加载JSON:

AngularJS – UI-router – How to configure dynamic views

这里的重点是,我们将在.config()状态存储对$stateProvider的引用并在.run()阶段使用它,一旦JSON可以通过$http加载

// ref to provider,to be configured later
var $stateProviderRef;

// config phase
app.run(['$stateProvider',function ($stateProvider) 
  {
    $stateProviderRef = $stateProvider
  }

// run phase
app.run(['$q','$rootScope','$state','$http',function ($q,$rootScope,$state,$http) 
  {
    $http.get("myJson.json")
    .success(function(data)
    {
      angular.forEach(data,function (value,key) 
      { 
          var state = {
            "url": value.url,...
          };
          ...
          // here we still configure provider,but in RUN
          $stateProviderRef.state(value.name,state);
      });

但是有一些缺点.主要是,直接网址导航(复制 – 粘贴)将无法正常工作.该网址不会很快得到解决……

其次,我首选的方法 – 在服务器上创建JSON作为变量,将其作为脚本加载.

所以服务器会以某种方式通过/ api / stateData生成响应,如:

var stateData  = [{ stateName : "State1",...
}];

我们将把它作为资源注入页面

<script src="/api/stateData" ...

这可以直接在.config()阶段使用,并将解决很快配置URL的问题.

猜你在找的Angularjs相关文章