Vue中dialog如何清空子组件的值: open和close的用法($nextTick([callback,context]))

最近学习Vue的时候,遇到了通过dialog打开子组件, 子组件中的值无法被清空,查阅API后,发现可以用open和close。

<el-dialog :visible="userUpdateVisible" width="800px" @open="onUserUpdateVisibleOpen()" @close="closeUserAdd()" >
          <el-tabs v-model="activeName" @tab-click="handleTabClick">
            <el-tab-pane :label="userId?'修改人员基本信息':'新增人员基本信息'" name="user-base-info">
              <user-router :userId="userId" @closeUserAdd="closeUserAdd()" ref="user-router" @refreshData="search()" >

               </user-router>
            </el-tab-pane>
          </el-tabs>  
    </el-dialog>

 export default {
    methods:  {
        onUserUpdateVisibleOpen(){
           this.$nextTick(() => {
              let form = this.$refs["user-router"];
              form.initPage();
            });
        },
        closeUserAdd(){
          this.userId = ""
          this.userUpdateVisible=false;
          this.search()
        },
    }
 }

其中涉及到Vue的原型方法调用:

  • 参数:

    • {Function} [callback]
    • {Object} [context]
  • 用法:

    将回调推迟到下一个DOM更新周期后执行。在更改了一些数据以等待DOM更新后立即使用它。

    // modify data
    vm.msg = 'Hello'
    // DOM not updated yet
    Vue.nextTick(function () {
      // DOM updated
    })
    
    // usage as a promise (2.1.0+, see note below)
    Vue.nextTick()
      .then(function () {
        // DOM updated
      })

    2.1.0+中的新增内容:如果未提供回调,则返回Promise,并且在执行环境中支持Promise。请注意,Vue没有附带Promise polyfill,所以如果你的目标浏览器本身不支持Promises(看着你,IE),你必须自己提供一个polyfill。

      参考自:

      https://vuejs.org/v2/api/?#Vue-nextTick

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值