我需要从某些呈现的评论文本中删除开始和结束<p>
标记。我将内容作为prop传递给组件,我认为在这样做时,它不允许v-html指令正常工作。
我需要在没有html标签的情况下呈现内容
这是我尝试使用v-html
正常渲染的地方 <textarea class="form-control comment-inline-edit" v-html="content" name="comment-inline-edit" cols="45" rows="3"></textarea>
这是我从父组件
传递渲染内容的地方<CommentEdit v-show="isEditting" :content="comment.content.rendered" v-on:cancel="cancelEdit" />
除了使用v-html之外,还有VueJS方法吗?
答案 0 :(得分:12)
我建议您使用过滤器从VueJS中的渲染文本中删除HTML,这样您就可以重复使用应用程序周围的过滤器,而不是特定的单一计算。
我写了以下内容,它利用了浏览器的解析(最可靠的方法),因为正则表达式可以被用户愚蠢所阻挠:
Vue.filter('striphtml', function (value) {
var div = document.createElement("div");
div.innerHTML = value;
var text = div.textContent || div.innerText || "";
return text;
});
在app.js
中加入此内容之后,您可以按照以下方式将其呈现在任意位置:
{{ pdf.description | striphtml }}
答案 1 :(得分:3)
如何在javascript already has an answer中删除文本中的HTML标记。
Vue的方法是创建一个计算属性,运行代码从呈现的内容中删除HTML标记,然后将其传递给CommentEdit
组件:
computed: {
strippedContent() {
let regex = /(<([^>]+)>)/ig;
return this.comment.content.rendered.replace(regex, "");
}
}
<CommentEdit v-show="isEditting" :content="strippedContent" />
答案 2 :(得分:0)
<p> @{{data.description | strippedContent}} </p>
filters: {
strippedContent: function(string) {
return string.replace(/<\/?[^>]+>/ig, " ");
}
}
为我工作