AngularJS指令能否从动态内容中提取类名
Can AngularJS directive pick up class name from dynamic content?
http://jsfiddle.net/xKU5R/
在上面的例子中,我期望cls
类的元素在ng-repeat
(ng-bind-html-unsafe
(中以相同的行为被拾取,并显式地设置一个。
<div ng-app="appp">
<div ng-controller="Ctrl">
<ul>
<li ng-repeat="r in data" ng-bind-html-unsafe="r.alink"></li>
</ul>
<div class="cls">External</div>
</div>
</div>
function Ctrl($scope) {
$scope.data = [
{alink: '<span><a class="cls">One</a></span>'},
{alink: '<span><a class="cls">Two</a></span>'}
];
}
angular.module('appp', [])
.directive('cls', function() {
return {
restrict: 'C',
replace: true,
scope: true,
link: function(scope, element, attrs) {
element.bind('click', function() {
alert('Aha!');
});
}
}
});
我想知道我在这里做错了什么?
问题是Angular没有编译新的HTML。最简单的解决方案可能是使用$compile
服务手动编译动态内容。在自定义指令中执行此操作,并将ng-bind-html-unsafe="r.alink"
替换为类似htmlinsert="r.alink"
的内容。以下是该指令的编码方式:
angular.module('appp', [])
.directive('htmlinsert',function($compile){
return {
scope: {
htmlinsert: '='
},
link: function(scope,element,attrs){
var compiledElement = $compile(scope.htmlinsert)(scope);
element.append(compiledElement);
}
}
});
对html字符串的引用使用隔离范围绑定传递,然后在附加到重复DOM元素的当前迭代之前进行编译。
演示:http://jsfiddle.net/sh0ber/CLEqc/
相关文章:
- 当数据从excel表中提取时,我想使用动态进度条
- 如何添加动态Id's并在运行时提取它们
- 用于提取基于点概念的变量的动态Regex
- 我正在尝试从 xhtml 文件中动态提取所有
元素,并使用 javascript 将它们放入选择列表中
- 如何在单击按钮后提取javascript中textarea的id(在本例中是动态的)
- 从动态复选框的父级中提取类名
- 从动态页面中提取 html 源代码
- 使用 node.js 和 PhantomJS 提取动态内容
- 使用Javascript提取外部动态链接
- 如何使用jQuery提取动态加载的胡子模板的一部分
- 如何使用python在网页上提取动态时间计数器
- 我的ajax调用没有从PHP/Mysql中提取动态数据
- 从H2提取特定信息,编辑并删除图像中的一些动态值
- 如何使用d3.js从json文件中提取数据来绘制动态图
- 如何从网页中提取javascript动态数据
- AngularJS指令能否从动态内容中提取类名
- 如何使用selenium提取工具提示内容,其中工具提示是由javascript动态加载的
- 从动态网页中提取文本
- 使用DOM从动态html表中提取数据
- 如何提取动态生成元素的id