gpt4 book ai didi

javascript - 如何让 AngularJS 指令更新另一个指令生成的 anchor

转载 作者:行者123 更新时间:2023-11-27 23:33:28 25 4
gpt4 key购买 nike

我是 Angular 新手,不确定我的问题措辞是否正确。这就是问题所在。我从数据库收到一个包含所有标签的 html block

<DOCTYPE>
<html>
<head>...</head>
<body>...</body>
</html>

没办法,我无法控制数据库中的任何内容,这是我收到并必须处理的内容。

我的 Angular 代码在剑道网格中呈现此信息。我创建了指令来在网格的特定列中编写渲染 HTML。

myDirectives.directive('column', function(){
return{
restrict: 'E',
scope: {
value: '=',
text: '=',
},
replace: true,
template: <div><span target-blank>[template html to render to column in the grid]</span></div>,
link: function(scope, element, attrs){
// code to do stuff
}
}
}

我还创建了另一个指令:

myDirectives.directive('target-blank', function () {
return {
restrict: 'A',
replace: false,
compile: function (element) {
var elems = (element.prop("tagName") === 'A') ? element : element.find('a');
elems.attr("target", "_blank");
}
};
});

我想要完成的是检查返回的 HTML 中的每个 anchor ,并使 anchor 在新窗口中打开。列 HTML 完美呈现,没有任何问题,但是, anchor 仍然在同一选项卡中打开,而不是在新选项卡中打开。我究竟做错了什么?预先感谢您。

更新1:@dfsq,这是我更新的测试链接[ http://plnkr.co/edit/WVkLDjhAzRxuS1A7mPg0?p=preview]我尝试在这里使用 ng-bind-html 但它抛出错误。不过它在我的代码中对我有用。

最佳答案

为了定义指令target-blank,你需要在JS中遵循camelCase表示法:

myDirectives.directive('targetBlank', function () {
return {
restrict: 'A',
replace: false,
compile: function (element) {
var elems = (element.prop("tagName") === 'A') ? element : element.find('a');
elems.attr("target", "_blank");
}
};
});

关于javascript - 如何让 AngularJS 指令更新另一个指令生成的 anchor ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34338950/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com