Я искал аналогичный вопрос, но те, которые возникли, выглядят несколько иначе. Я пытаюсь изменить ui-sref = '' связи динамически (эта ссылка указывает на следующий раздел формы мастера, а следующий раздел зависит от выбора, сделанного в раскрывающемся списке). Я просто пытаюсь установить атрибут ui-sref в зависимости от выбора в поле выбора. Я могу изменить ui-sref путем привязки к атрибуту scope, который задается при выборе. однако ссылка не работает, возможно ли это вообще? спасибо
<a ui-sref="form.{{url}}" >Next Section</a>
а затем в моем контроллере я устанавливаю параметр url таким образом
switch (option) {
case 'A': {
$scope.url = 'sectionA';
} break;
case 'B': {
$scope.url = 'sectionB';
} break;
}
В качестве альтернативы я использовал директивы, чтобы заставить его работать, создавая гиперссылку с нужным атрибутом ui-sref в соответствии с опцией, выбранной в поле выбора (выпадающее меню).
Hhowever это означает, что я должен повторно создать ссылку каждый раз, когда выбран другой вариант из selectbox, который вызывает нежелательный мерцающий эффект. Мой вопрос в том, возможно ли изменить значение ui-sref, как я пытался сделать выше, упрощая изменение значения url в моем контроллере или мне нужно повторно создать весь элемент с помощью директивы каждый раз, когда выбор сделано, как я сделал ниже? (просто показывая это для полноты)
Выберите директиву опций (эта директива генерирует директиву ссылок)
define(['app/js/modules/app', 'app/js/directives/hyperLink'], function (app) {
app.directive('selectUsage', function ($compile) {
function createLink(scope,element) {
var newElm = angular.element('<hyper-link></hyper-link>');
var el = $(element).find('.navLink');
$(el).html(newElm);
$compile(newElm)(scope);
}
return {
restrict: 'E',
templateUrl: '/Client/app/templates/directives/select.html'
,link: function (scope, element, attrs) {
createLink(scope, element);
element.on('change', function () {
createLink(scope,element);
})
}
}
})
Директива гиперссылки
define(['app/js/modules/app'], function (app) {
app.directive('hyperLink', function () {
return {
restrict: 'E',
templateUrl: '/Client/app/templates/directives/hyperLink.html',
link: function (scope, element, attrs) { }
}
})
Шаблон гиперссылки
<div>
<button ui-sref="form.{url}}">Next Section</button>
</div>