如何让AngularJS指令更新由另一个指令生成的锚点
How to have a AngularJS directive update the anchors generated by another directive
我对angular很陌生,不确定我的问题措辞是否正确。这就是问题所在。我从一个数据库收到一块html,所有标签都包括
<DOCTYPE>
<html>
<head>...</head>
<body>...</body>
</html>
这是没有帮助的,我无法控制DB中的任何东西,这是我收到的,也是我必须处理的。
我的角度代码在剑道网格中呈现这些信息。我创建了一些指令来编写和呈现网格中特定列中的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中的每个锚点,并使锚点在一个新窗口中打开。列HTML完美呈现,没有任何问题,然而,锚仍然在同一个选项卡中打开,而不是在新的选项卡中打开。我做错了什么?提前谢谢。
更新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");
}
};
});
问题是第二个指令在页面加载后立即启动,而没有给kendo呈现html的时间。这纯粹是时间问题。添加$timeout依赖项解决了问题。
相关文章:
- 如何在另一个组件中获取指令/组件实例
- 如何使用其他自定义指令中的元素标记作为另一个自定义指令的模板
- 调用另一个自定义指令的角度自定义指令
- AngularJs 从指令中的另一个调用控制器
- 如果指令包含在另一个指令中,我如何在隔离范围内添加双向数据绑定属性
- 测试依赖于另一个指令Angularjs的指令
- 如何在angularjs中访问一个指令作用域值到另一个指令
- 当uib分页被包装在另一个指令中时,AngularJS表数据没有更新
- ng-repeat=“(key, value)” 不能将 {{key}} 的值用作另一个指令的全局范围的一部分
- 如何在angularjs中将一个具有赋值的指令转换为另一个指令
- 从另一个模块访问作用域的指令
- 从另一个指令访问指令的作用域变量
- 如何从另一个指令访问指令的 DOM 元素
- 如何仅当存在时才要求指令(在另一个指令内)
- 使用 AngularJS 需要选项调用另一个指令
- 另一个排除指令内的角度排除指令
- 使用一个指令从另一个独立作用域复制范围属性
- 角度:在另一个模态指令中加载的谷歌地图指令保持空白
- 自定义指令如何知道它是否已单击另一个控件
- 在另一个指令中使用 ui-tinymce 指令