我正在尝试从父方法调用子方法。
我使用的库实际上不支持VUE 3。
它有VUE 3测试版,这意味着它不会完全支持VUE 3。
代码如下所示:
<grid-layout
ref='gridlayout'
v-model:layout="layout"
:col-num="6"
:row-height="70"
:is-draggable="draggable"
:preventCollision='true'
:verticalCompact="false"
:isResizable="false"
:use-css-transforms="true"
:maxRows='5'
>
<!-- can not use ref here -->
<grid-item
:key="item.key" v-for="item in layout"
:x="item.x"
:y="item.y"
:w="item.w"
:h="item.h"
:i='item.i'
>
<span class="text">{{item.i}}</span>
</grid-item>
</grid-layout>
它不支持网格项上的引用,但我需要在其中声明的函数。
我试探着:
__vueParentComponent.proxy
但它不能在生产模式下工作。
是我修改源代码并在GitHub上打开请求的唯一方法吗?!
相关的问题很难搜索。希望有人能帮助我...
编辑:
抱歉,问题没有回答完。
这是我使用的图书馆。
https://jbaysolutions.github.io/vue-grid-layout/
我想动态抓取一个新的网格项到网格布局中。
库提供了从外部抓取的方式,但我面临的问题是“$children”在VUE 3中被删除了。
https://github.com/jbaysolutions/vue-grid-layout/blob/master/website/docs/.vuepress/components/Example10DragFromOutside.vue
有错误的代码库提供:
// get the grid-item
let el = this.$refs.gridlayout.$children[index];
// call grid-item function to calculate the new position
let new_pos = el.calcXY(mouseXY.y - parentRect.top, mouseXY.x - parentRect.left);
我把它编辑成:
var gridlayout = ref()
let el = gridlayout.value.$refs.item.children[index]
let new_pos = el.__vueParentComponent.proxy.calcXY(mouseXY.y - parentRect.top, mouseXY.x - parentRect.left)
它在生产模式下不起作用。
我得到错误:
TypeError: Cannot read properties of undefined (reading 'proxy')
有没有办法在没有ref的情况下替换“$children”?
1条答案
按热度按时间hs1ihplo1#
我刚才也遇到了这个问题,我的解决方案是直接获取子组件