ui-router中templateUrl从一个状态到另一个状态的动态更改

时间:2016-08-09 03:46:51

标签: javascript angularjs angular-ui-router state

HTML:

<a ui-sref="user.tools.selectedTemplate({provider: t.id})" target="_blank">{{t.name}}</a>

上面的代码是ng-repeat,其中许多模板链接都加载了name和id,因此当我点击每个链接时,href将更新为附加到所选模板链接的id号。我正在使用相同的控制器生成大约十个模板。我将ui-sref中的值从一个状态传递到另一个状态,所以我需要动态的templateUrl, 我尝试了这个link issue但我无法发送stateparams,因为主模板页面没有参数。

此处为app.js中的ui路由器代码

.state('user.tools.template',angularAMD.route({
    url: '/template',
    templateUrl: './views/tools/select-template.html',
    controller: 'selectTplCtrl',
    controllerUrl: 'tools/selecttplCtrl'
}))

.state('user.tools.selectedTemplate',angularAMD.route({
    url: '/selectedTemplate/:provider',
    templateUrl: function($stateParams){
        return './views/tools/selected-template'+'$stateParams.provider'+'.html'
    },
    controller: 'selectedTemplateCtrl',
    controllerUrl: 'tools/selectedTemplateCtrl'
}))

任何人都可以解决这个问题吗?

1 个答案:

答案 0 :(得分:1)

我会说你走在正确的轨道上......只需按照以下方式调整网址构建:

templateUrl: function($stateParams){
    //return './views/tools/selected-template'+'$stateParams.provider'+'.html'
    return './views/tools/selected-template'+ $stateParams.provider +'.html'
}

在此处查看更多内容,在使用动态模板链接时,我们可以使用UI-Router获得的内容: