【问题标题】:StateProvider generate template url dynamically - closure issueStateProvider 动态生成模板 url - 关闭问题
【发布时间】:2014-05-19 09:59:02
【问题描述】:

我通过枚举枚举并为其中的每个值生成一个状态,从一个枚举对象生成我的 url 状态。

现在我需要结合路由参数和当前状态来生成我的模板 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);
            }

【问题讨论】:

    标签: javascript angularjs closures url-routing


    【解决方案1】:

    我找到了解决方法并创建了自己的范围以避免关闭问题:

    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
                    });
            }
    

    【讨论】:

      猜你喜欢
      • 2011-01-09
      • 1970-01-01
      • 2014-10-07
      • 2010-09-06
      • 2023-03-03
      • 1970-01-01
      • 1970-01-01
      • 2020-09-18
      • 2019-07-10
      相关资源
      最近更新 更多