我从REST api调用接收到一个字符串数组,并且字符串中包含一些html标记,例如:
Bard's opponents can also travel through his Magical Journey doorways. You can follow him, if you think it's safe.</li>
You can crush Bard's healing shrines just by walking over them. Don't let his allies take them without a fight.
Bard's ultimate, Tempered Fate, affects allies, enemies, monsters, and turrets alike. Sometimes it can be to your advantage to jump into it!</li>
每一行都是一个字符串,其中两行最后有一个</li>
标记。
我尝试编写一个接收这样一个数组的函数,并返回一个更正的数组。问题是,当我使用它时,我网站上的控制台显示了阵列中字符串的一些奇怪错误,我已经意识到我的功能是原因。
这就是功能:
modal.removeBracketsFromArray = function (array) {
if (array == undefined)
return array;
function removeBracketsText(text) {
return text.replace(/<[^>]*>/g, '')
};
var newArray = [];
for (var i = 0; i < array.length; i++) {
newArray.push(removeBracketsText(array[i]));
}
return newArray;
};
它似乎可以完成这项工作,但是在ng-repeat
属性中使用它时会有些麻烦。
这是一个使用示例:
<champion-ally-enemy-tips allytips="modalCtrl.removeBracketsFromArray(modalCtrl.champ.allytips)"
enemytips="modalCtrl.removeBracketsFromArray(modalCtrl.champ.enemytips)">
</champion-ally-enemy-tips>
然后转移到:
<ul>
<li ng-repeat="enemytip in enemytips"><h6>{{enemytip}}</h6></li>
</ul>
当我删除方法调用(如此)时,它不会显示错误,但标记仍然存在:
<champion-ally-enemy-tips allytips="modalCtrl.champ.allytips"
enemytips="modalCtrl.champ.enemytips">
</champion-ally-enemy-tips>
我的功能在没有意识到的情况下做了一些奇怪的事吗?谢谢你的帮助
这是我收到的错误的粘贴框:LINK
答案 0 :(得分:2)
如何创建自定义过滤器以去除显示的HTML,而不是搞乱数组呢?
.filter('removeHTML', function() {
return function(input) {
return input.replace(/<[^>]*>/g, '');
}
})
然后将ng-repeat
内的显示更改为:
<h6>{{enemytip | removeHTML}}</h6>