Angularjs set href 在指令中不起作用

Angularjs set href does not work from directive

所以我写了一个将应用于 link 标签的指令,如下所示:<a href="..." replace-link"></a>。该指令的作用是检查一些内容,然后 modify/replace/remove 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!');

稍后检查源代码,我可以看到它有效并且设置了新属性。为什么我不能设置 "href" 属性?

原来问题是最初的 html-link 绑定到一个 angular 变量:

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

应用指令并绑定到变量(并因此更改 link)现在是竞争/竞争条件。

我的解决方案是使用不同的属性来绑定并根据需要将指令从这个属性复制到 href 属性(仅当 link 不应该是 'unset' 时)。

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