elementUI无法通过this.$refs动态改变样式?

发布于 2022-09-07 12:36:22 字数 681 浏览 15 评论 0

用了elementUI中的弹框,需求是点击弹框内的按钮后,内部弹框的宽度改变
本来想通过

//this.$refs.elDialog.style.width = '1500px'   //1
//this.$refs.elDialog.width = '1500px'      //2

第一句,width的值是能改变,也不报错,但是实际样式宽度没有改变
第二句,直接报错

runner-3.25.5.min.js:1 [Vue warn]: Avoid mutating a prop directly since the value will be overwritten whenever the parent component re-renders. Instead, use a data or computed property based on the prop's value. Prop being mutated: "width"

found in

---> <ElDialog>... (1 recursive calls)
       <Root>

这是代码

请问一下这种情况应该怎么解决??

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

茶色山野 2022-09-14 12:36:23

谢谢上面两位的回答。但是两位的方法我都实践过了,都是不行呢。
所以我直接加了这个方法暴力改变宽度了

            changeWidth(){
                let element = document.querySelector("#elDialog>.el-dialog")
                element.style.width = '1500px'
            },

因为用this.$refs.elDialog绑定的elementUI组件的话,
直接 this.$refs.elDialog.style.width = '1500px'的权限是不够高的,就是说虽然能改变,但是是无法展示。

如果用this.$refs.elDialog.width = '1500px'的话,由于我是用的区域是数据父组件(相对于elementUI的dialog组件来说,这里嵌套了很多层了),所以是无法直接改变子组件的数据的。

め可乐爱微笑 2022-09-14 12:36:23
你需要加
setTimeout(function(){
            _this.$refs.elDialog.width = '1500px'
              console.log('this.$refs.elDialog',this.$refs.elDialog);
},0)

或这可以:width='' 绑定Dialog 的width

冰火雁神 2022-09-14 12:36:23
this.$nextTick(() => {
    this.$refs.elDialog.width = '1500px'
})

确保元素渲染再改宽度

另外我觉得框弹框并不是一个非常好的交互额。。。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文