我正在尝试使用Vue2为页面编辑器功能。 在页面上有一个'可编辑'的过滤器。它接收content_id。使用这个content_id,我们应该从根Vue实例接收数据(例如pageContent.mainTitle)。根据editModeOn根变量,我们应该渲染组件或仅输出合适的(例如<editable content="mainTitle" />
或mainTitle项中的内容)。有条件呈现:组件或数据
骨架HTML的:
<div id="root">
{{ 'mainContent' | editable }}
<label class="checkbox">
<input type="checkbox" v-model="editModeOn">
Switch edit mode
</label>
</div>
而且一个Vue公司的实例:
new Vue({
el: '#root',
data: {
editModeOn: true,
pageContent: {
mainTitle: "Test title",
mainContent: "Lorem ipsum dolor sit amet, consectetur adipisicing elit. At, et!"
}
},
filters: {
editable(contentId) {
if (!this.editModeOn) {
return `<editable content="{{ this.pageContent[contentId] }}" />`;
} else {
return this.pageContent[contentId];
}
}
}
});
为什么我想要实现使用过滤器功能的原因是因为当编辑模式中,禁止我不要的” t想要制作任何类似span或div的包装器(因为它作为任何组件的根实例都是必需的)。
也许这是一个更好的方式来实现nesessary功能,但我没有找到它。有没有人有一个想法如何使这项工作?谢谢!
是的,这会的工作,但我试图让使用简单组件(如'<编辑的content_id = “MAINTITLE”/>'或'{{ '搜索Maincontent' 的东西|编辑} }'并且不要添加插入该组件的巨大构造。 – bashkovpd
v-if和v-else不需要匹配标签吗? –
@RichardMatsen没有。https://codepen.io/Kradek/pen/EwZXGK?editors=1010 – Bert