在控制器中创建HTML元素并将其拼接在范围内的文本中

时间:2015-01-14 08:31:43

标签: angularjs

我在范围内有一些关于此标记的文字[cid:ce743cbf-8c44-4c84-aa72-6d2c9eb4b81a] 这是通过包含内联内容的电子邮件生成的。

我需要浏览文本并将标签替换为指向这些资源的实际链接。 像这样:

<a target="_self" href="/api/attachment/ce743cbf-8c44-4c84-aa72-6d2c9eb4b81a">Name</a>

我现在可以使用替换部件,但无法使用angular.element创建实际元素。

这一切都适用于替换函数的此片段中的纯javascript:

var link = document.createElement("a");
    link.innerText = name;
    link.setAttribute("href", url);
    link.setAttribute("target", "_self");
    return link.outerHTML;

outerHTML由于某种原因拒绝在Firefox中工作。我怎样才能使用angular.element

由于

更新

目前,我可以通过简单的字符串连接来解决问题,所以:

return "<a target=\"_self\" href=" + url + ">" + name + "</a>";

这是唯一兼容Firefox和Chrome的东西。 但是这个选项感觉不是正确的解决方案。

更新

行。我在Robs回答的帮助下得到了它。

var link = angular.element("<a/>", {target: "_self", href: url, text: name});
return angular.element(link).wrap('<div>').parent().html();

这适用于两种浏览器。

2 个答案:

答案 0 :(得分:1)

尝试:

return angular.element(link).wrap('<div>').parent().html();

(灵感来自https://stackoverflow.com/a/4741203/1358376

答案 1 :(得分:0)

因此,如果我理解正确,你有一个文本,有一个链接,你想使用Jquery调整该链接,而不是你可以使用:     $( “元素”)。whatToDoWithIt
那会有用 如果你创建一个元素而你没有放入体内它就不会有一个outerHTML