index.vue 通过js挂载到html

  • 先用js,新建一个div,并且赋值一个id

因为,我们组件的挂载,是要指定一个 容器id,这个div就是我们挂载的容器

在这里插入图片描述

然后在Elements里面找
找document里面有没有刚刚插入的节点

  • 一般是在body的子节点的最后一个
  • 因为我们用的是 appendChild 方法
  • 这个就是我们刚刚动态插入的

在这里插入图片描述

接下来注册组件,然后挂载上去试试
在这里插入图片描述

在这里插入图片描述

Vue.prototype.$dialog = () => {
  const id = 'custom-dialog'
  const div = document.createElement('div')
  div.id = id
  document.body.appendChild(div)

  // 注册组件
  const DialogComponent = Vue.extend(Dialog)

  // 实例化
  const DialogInstant = new DialogComponent()

  // 挂载
  DialogInstant.$mount(`#${id}`)
}

把组件的内容换成element-ui的弹窗
在这里插入图片描述

然后写2个方法去控制visible这个变量
最后,把这个变量给弹窗绑定上去
在这里插入图片描述
把 APP.vue 那个调用删了
把这个调用放到一个按钮上面点击
就能实现,点击,打开弹窗了

放到某个点击事件里
你可以放在点击新增按钮的执行方法里面

点击新增按钮
调用这个方法去打开弹窗
写在调用那里
在这里插入图片描述

我们会发现:每点一次就会增加一个
在这里插入图片描述

所以,当我们操作很多次的时候,就会在document里添加很多个,
节点越多,我们页面的资源就会被占用

所以,我们要在弹窗关闭的时候,把弹窗销毁掉
el-dialog有这个事件
通常来说,我们组件里面调用this.$destroy就能销毁掉自身

接下来,给弹窗传入一个标题
在这里插入图片描述

这里调用的时候传入一个对象,里面有个title属性

那么应该去哪里接收这个对象

(方法,传参,接收参数)

就是在注册弹窗那里声明
注册那里就是声明方法
(方法不声明,是无法调用的)
const $dialog 是声明方法
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

阿珊和她的猫

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值