如果条件再次真实,如何禁用v-if编译缓存?

时间:2016-08-03 13:39:33

标签: javascript vue.js

我有以下场景:我使用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. 

1 个答案:

答案 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编译问题。