如何替换所有链接的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());
}
}
}