gpt4 book ai didi

javascript - AngularJS 指令可以从动态内容中获取类名吗?

转载 作者:行者123 更新时间:2023-12-03 08:08:10 24 4
gpt4 key购买 nike

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 字符串的引用使用隔离范围绑定(bind)传递,然后在附加到重复的 DOM 元素的当前迭代之前进行编译。

演示 : http://jsfiddle.net/sh0ber/CLEqc/

关于javascript - AngularJS 指令可以从动态内容中获取类名吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16929669/

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