代码之家  ›  专栏  ›  技术社区  ›  bbsimonbb

v-if能触发什么吗?v-if是否引发事件?

  •  5
  • bbsimonbb  · 技术社区  · 9 年前

    4 回复  |  直到 9 年前
        1
  •  10
  •   tony19 thanksd    4 年前

    您可以设置 watcher 关于条件渲染真实性的属性( v-if

    html

    <div id="app">
        <div v-if="toggleElement">MY ELEMENT</div>
        <button @click="toggleElement = !toggleElement">TOGGLE</button>
    </div> 
    

    剧本

    new Vue({
    el: '#app',
        data: {
            toggleElement: false
        },
        watch: {
            toggleElement(newValue){
                //do something if toggleElement changes
                alert("Element's v-if toggled");
            }
        }
    }) 
    

    fiddle

        2
  •  4
  •   bbsimonbb    9 年前

    可以通过直接从v-if开关表达式调用某些内容来实现这一点。你的开关表达式不再是一个纯函数,我不确定我是否有一个纯良心,但它是有效的。所以

    <div v-if='mySwitch && doSomething()'>
    

    Here

        3
  •  3
  •   Marek Urbanowicz user7125929    9 年前

    它会触发 mounted

    因此,如果你的父母:

    <template>
    <div>
    <child v-if='test'/>
    </div>
    </template>
    

    当测试更改时,您将触发 安装

        4
  •  0
  •   holux    4 年前

    我有一个确切的主题,弹出窗口需要首先填充(通过v-if),然后用GSAP设置动画。

     <section class="PopupBlok" v-if="$store.state.popup && animateOpen()">
    

    但是由于函数需要通过返回true来“确定”,因此不能在 animateOpen() 作用要解决此问题,请将动画延迟一次,如下所示:

     animateOpen() {
      this.$nextTick(() => { <Do Animation here> })
      return true
    

    因此,您的函数给出了OK,在下一个循环中,所有元素都可用于动画。

    我想它会与 setTimeout 当然,但是 $nextTick