替换ng-repeat中的元素的href

时间:2017-03-10 16:11:43

标签: angularjs

如何替换所有链接的href,包括nb-repeat中的元素链接。

我从外部api中检索带有链接的数据(double d = 0xAAAAAAAAAAAAAAAAAAd; ), 我添加到控制器范围,让角度填写重复列表, 但我需要用自定义指令替换实际的链接。

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

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

<a href=".."></a>

但是因为检索到的内容还包含指令和控制器, 我不能这样做,因为控制器的编译会触发它的init方法两次(这是不可接受的!)而且我无论如何都无法控制它!

elm.html(content); replaceAHrefs(elm); $compile(elm.contents())(scope)

SO:

我怎样才能在角度编译控制器之前对html进行祭坛?

还有其他建议吗? : - )

(再说一遍,请说一下,你应该在太阳穴中这样做,或者使用ng-href,因为我无法控制我检索的内容)

我需要替换的href(和ng-href)的示例是这样的:

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());
        }
    }
}

0 个答案:

没有答案