2016-08-09 1 views
2

HTML:динамическое изменение templateUrl в Ui-маршрутизатор от одного состояния к другому

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

Приведенный выше код в нг-повторе с большим количеством шаблонов ссылок загружаются с именем и идентификатором так, когда я нажимаю каждую ссылку, HREF будет обновляться с номером id, добавленным к выбранной ссылке шаблона. Я генерирую около десяти шаблонов с одним контроллером. Я передаю значение в ui-sref из одного состояния в другое, поэтому мне нужен динамический templateUrl, Я пробовал это link issue, но я не могу отправить stateparams, поскольку главная страница шаблона не имеет параметров.

Здесь пользовательский интерфейс код маршрутизатора в app.js

.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

Я бы сказал, что вы на правильном пути .. только URL конструкция должна быть отрегулированы так:

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

Смотреть еще здесь, что мы можем иметь с UI-маршрутизатором при работе с динамической связью шаблона :

+0

ах! Спасибо @Radim Kohler за ответ. и для дополнительных динамических решений :) – Arun

+0

Отлично, если это так или иначе помогло;) Наслаждайтесь UI-Router, сэр –