我们可以从模板返回功能访问已解析的参数吗

时间:2017-05-09 06:47:09

标签: angularjs angular-ui-router

我有这样的状态

                .state('dropdown', {
                    url: '/dropdown',
                    views: {
                        "@":{
                            template: getTemplate(params)
                        }
                    },
                    resolve: {
                        params: function(){
                            return {
                                stateHeader: 'Dropdown',
                                moduleName: 'dropdown',
                                files: [{"title": "dropdown.html", "path":"app/modules/dropdown/dropdown.html"}, {"title": "dropdown.ctrl.js", "path":"app/modules/dropdown/dropdown.ctrl.js"}, {"title": "dropdown.css", "path":"app/modules/dropdown/dropdown.css"}]
                            }
                        }
                    }
                })

并且模板返回功能是

function getTemplate(stateParams) {

    // I want to access those resolved parameters here

    var moduleName = stateParams.moduleName;
    var templateUrl = moduleName + '/' + moduleName;
    return '<div><tabs-directive exe-template=\'app/modules/' + templateUrl + '.html\' files=\'' + stateParams.files + '\' header=\'Basic Usage\'></tabs-directive></div>';
}

如何在getTemplate函数中传递和访问那些已解析的params对象,以使用相同的函数返回模板?请帮帮我。

注意: getTemplate函数也必须重新用于其他状态。

1 个答案:

答案 0 :(得分:0)

.state('dropdown', {
  url: '/dropdown',
  params: {
    stateHeader: 'Dropdown',
    moduleName: 'dropdown',
    files: [
      {"title": "dropdown.html", "path":"app/modules/dropdown/dropdown.html"},
      {"title": "dropdown.ctrl.js", "path":"app/modules/dropdown/dropdown.ctrl.js"},
      {"title": "dropdown.css", "path":"app/modules/dropdown/dropdown.css"}
    ]
  },
  views: {
    "@": {
      template: getTemplate($stateParams) {
        var moduleName = $stateParams.moduleName;
        var templateUrl = moduleName + '/' + moduleName;
        console.log('<div><tabs-directive exe-template=\'app/modules/' + templateUrl + '.html\' files=\'' + $stateParams.files + '\' header=\'Basic Usage\'></tabs-directive></div>');
      }
    }
  },
})

什么都没有得到解决&#39;在你的代码中,它们似乎都是params,所以你根本不需要决心。当您参考params时,即使它们处于相同的状态,您仍然需要将其视为$ stateParams(而不是stateParams),因此getTemplate()应该将其用作参数不是参数。