Angularjs 替换href';在ng repeat中的元素的s

Angularjs 替换href';在ng repeat中的元素的s,angularjs,Angularjs,如何替换所有链接(包括nb重复中的元素链接)的href 我从带有链接的外部api中检索数据(), 我将其添加到控制器范围,让angular填写重复列表, 但是我需要用一个自定义指令替换实际链接 解决方案可以是在控制器编译之前进行替换href, 但我找不到任何类型的控制器预编译(仅针对指令) 目前我有这个解决方案,如果我编译我检索的内容 elm.html(content); replaceAHrefs(elm); $compile(elm.contents())(scope) 但由于检索到的内容

如何替换所有链接(包括nb重复中的元素链接)的href

我从带有链接的外部api中检索数据(
), 我将其添加到控制器范围,让angular填写重复列表, 但是我需要用一个自定义指令替换实际链接

解决方案可以是在控制器编译之前进行替换href, 但我找不到任何类型的控制器预编译(仅针对指令)

目前我有这个解决方案,如果我编译我检索的内容

elm.html(content); replaceAHrefs(elm); $compile(elm.contents())(scope)
但由于检索到的内容还包含指令和控制器, 我不能这样做,因为编译控制器会触发它的init方法两次(这是不可接受的!),而我无论如何也无法控制它

function replaceAHrefs(elm) {
    var atags = elm.find('a');
    for (var i = 0; i < atags.length; i += 1) {
        var atag = angular.element(atags[i]);
        var href = atag.attr('href');
        var ngHref = atag.attr('ng-href');
        var dontReplace = atag.attr("dont-replace-href");
        console.log(atags[i],atag,href,ngHref,dontReplace);
        if ((ngHref || href) && isSelfServiceLink(href) && dontReplace === undefined) {
            atag.attr('ng-click', 'takeOverLink($event)');
            $compile(atag)(atag.scope());
        }
    }
}
函数replaceAHrefs(elm){
var atags=elm.find('a');
对于(变量i=0;i
因此:

如何在angular编译控制器之前创建html

还有其他建议吗?:-)

(请再说一遍,您应该在temple中执行此操作,或者使用ng href,因为我无法控制检索的内容)


我需要替换的a href(和ng href)示例如下:

<div ng-controller="MyController">

<div ng-controller="HtmlContentLoadedThatICannotChangeBeforeAfterDomLoad">
    <h2>Title..</h2>
    <div ng-repeat="service in services | orderBy:'name'">
        <a href='SomeLinkThatIWillReplaceWithADirective'>service.label</a>
        <a ng-href='{{AnotherLinkThatIWillReplaceWithADirective}}'>service.label</a>
    </div>
</div>

</div>

标题

我们可以使用ng repeat块和hrefshow us您的ng repeat块吗?我添加了一个我需要接管href的内容示例。我无法在加载之前更改html,因此再次对内部控制器进行某种预编译将解决我的问题。。