Я шукав подібне запитання, але ті, що виникали, здаються дещо іншими. Я намагаюся динамічно змінити ui-sref = '' посилання (це посилання вказує на наступний розділ форми майстра, а наступний розділ залежить від вибору, зробленого зі спадного списку). Я просто намагаюся встановити атрибут ui-sref залежно від деякого виділення у вікні вибору. Я можу змінити ui-sref, прив’язавши до атрибута сфери, який встановлюється під час вибору. однак посилання не працює, чи можливо це взагалі? Дякую
<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 відповідно до опції, вибраної у полі вибору (спадне меню).
Однак це означає, що мені доводиться відтворювати посилання щоразу, коли з поля вибору вибирається інший варіант, що спричиняє небажаний ефект мерехтіння. Моє запитання полягає в наступному: чи можна змінити значення 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>