Ich habe nach einer ähnlichen Frage gesucht, aber die, die auftauchten, scheinen etwas anders zu sein. Ich versuche, das ui-sref = '' eines Links dynamisch zu ändern (dieser Link verweist auf den nächsten Abschnitt eines Assistentenformulars und der nächste Abschnitt hängt von der Auswahl in der Dropdown-Liste ab). Ich versuche einfach, das Attribut ui-sref abhängig von einer Auswahl in einem Auswahlfeld festzulegen. Ich kann das ui-sref ändern, indem ich es an ein Bereichsattribut binde, das festgelegt wird, wenn eine Auswahl getroffen wird. Der Link funktioniert jedoch nicht. Ist dies überhaupt möglich? Vielen Dank
<a ui-sref="form.{{url}}" >Next Section</a>
und dann setze ich in meinem Controller den URL-Parameter auf diese Weise
switch (option) {
case 'A': {
$scope.url = 'sectionA';
} break;
case 'B': {
$scope.url = 'sectionB';
} break;
}
Alternativ habe ich Anweisungen verwendet, um es zum Laufen zu bringen, indem ich den Hyperlink mit dem gewünschten ui-sref-Attribut gemäß der im Auswahlfeld ausgewählten Option (Dropdown) generiert habe.
Dies bedeutet jedoch, dass ich den Link jedes Mal neu erstellen muss, wenn eine andere Option aus dem Auswahlfeld ausgewählt wird, die einen unerwünschten Flackereffekt verursacht. Meine Frage ist, ob es möglich ist, den Wert der UI-Sref wie oben beschrieben zu ändern, indem der Wert der URL in meinem Controller vereinfacht wird, oder ob ich das gesamte Element bei jeder Auswahl mithilfe einer Direktive neu erstellen muss wird gemacht wie ich unten gemacht habe? (Nur der Vollständigkeit halber)
Optionsanweisung auswählen (diese Anweisung generiert die Linkanweisung)
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);
})
}
}
})
Hyperlink-Direktive
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) { }
}
})
Hyperlink-Vorlage
<div>
<button ui-sref="form.{url}}">Next Section</button>
</div>