我已经搜索过类似的问题,但出现的结果似乎有些不同。 我正在尝试动态更改链接的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属性的超链接来使其工作。
然而,这意味着每次从下拉框中选择不同的选项时都必须重新创建链接,这会导致不良的闪烁效果。我的问题是,是否可以像我上面尝试简单更改控制器中url值那样更改ui-sref的值,还是每次进行选择时都必须像下面所做的那样使用指令重新创建整个元素?(仅为完整性而显示此内容)
Select option directive(此指令生成链接指令)
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>