gpt4 book ai didi

javascript - 指令不返回 html 元素

转载 作者:行者123 更新时间:2023-11-30 12:33:45 24 4
gpt4 key购买 nike

我有点难以理解我试图传递名称的指令,我希望该指令返回 <img>成一张 table 。

这里是在 Controller 中定义名称的方式:

$scope.name = 'foo';

这是html

<tr>
<th>status</th>
<td><icon-selector filterby="name"></icon-selector></td>
</tr>

这是指令

angular.module('myApp')
.directive('iconSelector', function ($compile) {

return {
restrict: 'E',
scope:{
filterby:'='
},

link: function(scope,element, attrs) {
console.log(scope.filterby);
if (scope.filterby === 'foo') {
return '<img src="sample.png">';
}else {
return '<p>invalid</p>';
}
}
};
});

理想情况下,当指令处理 {{name}} 时,它在浏览器中应该如下所示:

<tr>
<th>status</th>
<td><img src="sample.png"></td>
</tr>

有人可以告诉我我做错了什么吗,一个 plunker 演示将不胜感激。

最佳答案

链接函数不会返回 HTML 元素来替换应用指令的元素。 link函数一般用于注册事件监听器和DOM操作。如果你想替换元素,你可以这样做:

link: function(scope,element, attrs) {
console.log(scope.filterby);
if (scope.filterby === 'foo') {
element.replaceWith('<img src="sample.png">');
} else {
element.replaceWith('<p>invalid</p>');
}
}

关于javascript - 指令不返回 html 元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26765251/

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