vue+elementui 打开弹窗 但是弹窗的接口只会初始调用一次,为什么?

1.在使用element的dialog弹窗的时候

<el-dialog
      :title="title"
      :visible.sync="dialogVisible"
      width="68vw"
    >
      <Info></Info>
    </el-dialog>

但是如果你是在列表页使用 根据每次传入的id不同获取不同的数据的时候,你会发现只有在第一次使用的时候才能调用接口。这是为什么呢?让我们来看一个例子。


image.png

当我们点击关闭的时候来看一下右侧代码的变化吧~~


image.png


这时候我们在点击新增按钮的时候,element这边是采用v-show来控制,v-show采用display:none来控制是否显示,并没有销毁dom元素,这个时候我们试想下这种场景如果table列表点击查看弹出弹窗,弹窗需要掉接口初始化数据,这时候你会发现只有在第一次的时候才会调接口,第二次的时候就没有调接口。这是因为v-show并没有销毁,你在弹窗组件dialog中

created(){
this.init()
}
methods:{
init(
调接口
)
]

这个时候你会发现init只会执行一次的,因为你关闭的时候只是display:none掉,所以下次在dispaly:block的时候created这个生命周期只会执行一次的啊。那么如何解决这个问题呢?

2.修改的办法也很简单,在dialog层加一个v-if判定

<el-dialog
      :title="title"
      v-if="dialogVisible"
      :visible.sync="dialogVisible"
      width="68vw"
    >
      <Info></Info>
    </el-dialog>

给这个弹窗加v-if那么下次关闭的时候就会销毁这个弹窗,下次在进来的时候他就会在调用created这个生命周期函数。

小伙伴们,这样讲明白了吗?

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 完整版推荐在线阅读 https://interview2.poetries.top/[https://interv...
    前端进阶之旅阅读 3,529评论 2 20
  • vue的特点 Vue.js是一款轻量级的以数据驱动(数据的变化将引起视图的变化)的构建单页面应用的mvvm框架,它...
    阿踏阅读 1,975评论 1 11
  • Vue介绍 什么是Vue.js vue.js是目前最火的一个框架,React是最流行的一个框架(React除了开发...
    jxvl假装阅读 481评论 0 0
  • vue笔记 一.vue实例 vue的生命周期 beforeCreate(创建前), created(创建后), b...
    秋殇1002阅读 1,076评论 0 1
  • 推荐指数: 6.0 书籍主旨关键词:特权、焦点、注意力、语言联想、情景联想 观点: 1.统计学现在叫数据分析,社会...
    Jenaral阅读 5,753评论 0 5