You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Vue.js中如何在confirm弹窗弹出前显示指定HTML内容?

Vue.js中如何在confirm弹窗弹出前显示指定HTML内容?

嘿,这个问题我之前也踩过坑!咱们先搞清楚为啥原来的代码不生效:

Vue的DOM更新是异步的——当你把userIsDeciding设为true时,Vue不会立刻去修改页面DOM,而是把这个更新任务放进一个异步队列里。但confirm()是同步方法,它会立刻阻塞浏览器的主线程,这时候DOM还没来得及渲染那个黄色的<p>标签,所以你看不到它就直接弹出确认框了。

那怎么解决呢?我们需要等Vue完成DOM更新后,再弹出确认框。Vue给我们提供了$nextTick方法,它的作用就是在DOM更新完成后执行指定的回调函数,完美适配这个场景!

修改后的代码如下:

new Vue({
  el: "#vueexample",
  data: { userIsDeciding: false },
  methods: {
    colorFunction: function () {
      this.userIsDeciding = true;
      
      // 用$nextTick等待DOM更新完成后再弹出确认框
      this.$nextTick(() => {
        if (confirm("please confirm")) {
          // 这里放你需要执行的逻辑
          console.log("用户确认了操作");
        }
        this.userIsDeciding = false;
      });
    },
  },
});

对应的HTML部分保持不变:

<script src='https://cdn.jsdelivr.net/npm/vue/dist/vue.min.js'></script>

<div id="vueexample">
  <button @click="colorFunction()">Click me!</button>
  <p v-if="userIsDeciding" style="background-color: yellow">
    The user has to decide.
  </p>
</div>

这样修改后,点击按钮时,Vue会先更新DOM显示黄色提示文本,然后再弹出确认框,就能达到你想要的效果啦~

备注:内容来源于stack exchange,提问作者jaheraho

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.21 15:09:36