Angularjs set href在指令

时间:2015-11-30 13:40:26

标签: angularjs angularjs-directive href

所以我写了一个指令,它将应用于这样的链接标签:<a href="..." replace-link"></a>。该指令的作用是检查一些东西,然后修改/替换/删除href。它还会做一些额外的事情,所以我,并且不能将ng-href用于我的目的。

该指令包含以下代码:

myApp.directive('replaceLink', function () {
return {
    link: function (scope, element, attrs) {
        attrs.$set('href', attrs.href + 'REPLACED!');
    }
};
});

但似乎不起作用。将其更改为

attrs.$set('newhref', attrs.href + 'REPLACED!');

稍后检查源代码,我可以看到它工作正常并设置了新属性。为什么我不能设置&#34; href&#34;属性?

1 个答案:

答案 0 :(得分:2)

原来问题是,原始的html-link开始时绑定了一个角度变量:

<a href="some-link/{{variable}}" replace-link>

将指令和绑定应用于变量(从而更改链接)现在是竞争/竞争条件。

我的解决方案是使用不同的属性来绑定并根据需要将指令从此复制到href属性(仅当链接不应该“未设置”时)。

有点难以解释,所以我创建了一个jsfiddle来说明这一点: http://jsfiddle.net/akg7yd4f/3/