2014-05-19 41 views
0

我通过enum枚举生成我的url状态,并通过枚举生成我的url状态并为其中的每个值生成一个状态。StateProvider动态生成模板网址 - 关闭问题

现在我需要使用路由参数和当前状态的组合来生成我的模板url,并寻找无法通过的关闭问题。

这是我的代码:

// Stages is the enum 
for (var stage in Stages) { 
     $stateProvider.state(stage.toString(), 
     { 
      url: '/' + currStageStr + '/:param1', 
      templateUrl:function ($stateParams) { 
       return getTemplateUrl($stateParams.param1, stage); 
      }, 
      resolve: { model: getStageModel }, 
      controller: getController 
     }); 
} 

我的问题是在本节:

templateUrl:function ($stateParams) { 
        return getTemplateUrl($stateParams.param1, stage); 
      } 

由于阶段来自外部的范围,我得到每次迭代相同的值 - 关闭问题。

我在网上没有找到任何可以给我一个动态生成模板url的不同函数签名。

我希望做这样的事情:

templateUrl:function ($stateParams,stage) { 
        return getTemplateUrl($stateParams.param1, stage); 
      } 

回答

0

我发现周围的工作和创建自己的范围,以避免关闭问题:

for (var stage in Stages) { 
    generateStageObj($stateProvider,stage) 
} 

function generateStageObj($stateProvider, stage) { 
      return $stateProvider.state(stage.toString(), 
       { 
        url: '/' + currStageStr + '/:param1', 
        templateUrl: function ($stateParams) { 
         return getTemplateUrl($stateParams.param1, stage); 
        }, 
        resolve: { model: getStageModel }, 
        controller: getController 
       }); 
     }