我有以下场景:我使用v-if动态编译并将部分html插入DOM。 每次,v-if条件变为true,partial的内容都会改变。不幸的是,似乎下一个编译行为很奇怪:“已更改的部分未编译”。 我已阅读文件http://vuejs.org/guide/conditional.html#v-if-vs-v-show 它说: “ v-if也是惰性的:如果条件在初始渲染时为假,它将不会执行任何操作 - 部分编译将不会开始,直到条件第一次变为真(并且随后缓存编译)。 “ 我的问题是:是否有一种方法可以禁用缓存(强制v-如果每次 条件是真的时都编译)?
我创建了一个复杂的小提示来演示这个概念:第二次v-if条件变得真实,v-if不会编译更改的内容,请检查以下内容: https://jsfiddle.net/matiascx/d1ea22nc/6/
预期的行为是:当更改v-if包含内容的内容时,v-if将编译它并在每次v-if条件为真时将其插入到dom中。不幸的是,它只在第一次条件成为现实时起作用。它在第一次之后永远不会起作用。它应该是v-if编译缓存问题。如何禁用该缓存并使其按预期工作?
No binary for Safari browser on your platform. Please set "SAFARI_BIN" env variable.
答案 0 :(得分:0)
为什么不用模板创建预览组件并在其中添加内容。
HTML
<preview v-if="displayme">{{{content}}}</preview>
<template id="preview">
<div>
<slot></slot>
</div>
</template>
如果由于组件而无法实现。以下是对编译函数https://github.com/vuejs/Discussion/issues/254的扩展讨论。
但请注意这个comment,建议您使用重复动态创建新组件。看看你是否可以使用v-for
来创建组件列表,这将解决HTML编译问题。