删除&#39; <和text =“”= =“”那些=“”>&#39;来自javascript中的字符串

时间:2016-05-12 19:01:30

标签: javascript arrays angularjs

我从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

1 个答案:

答案 0 :(得分:2)

如何创建自定义过滤器以去除显示的HTML,而不是搞乱数组呢?

.filter('removeHTML', function() {
    return function(input) {
        return input.replace(/<[^>]*>/g, '');
    }
})

然后将ng-repeat内的显示更改为:

<h6>{{enemytip | removeHTML}}</h6>