CyberNika / v-contextmenu

🖱 ContextMenu based on Vue 3 & Vue 2
https://cybernika.github.io/v-contextmenu/
MIT License
918 stars 112 forks source link

循环组件中引用 指令错误 #62

Closed tille1229 closed 5 years ago

tille1229 commented 5 years ago

作者你好,这个组件很好用,但是在循环中引用时会有一些bug,由于需要循环显示组件,无法将 代码抽出循环外。示例代码如下: `

        <v-contextmenu :ref="`${item.key}${disIndex}_contextmenu`">
          <v-contextmenu-item>菜单1</v-contextmenu-item>
          <v-contextmenu-item>菜单2</v-contextmenu-item>
          <v-contextmenu-item>菜单3</v-contextmenu-item>
        </v-contextmenu>

        <div v-contextmenu="`${item.key}${disIndex}_contextmenu`">
          <DisplayForm :ref="`${item.key}${disIndex}`" :data="item.data" :models="disItem" :remote="remote"/>
        </div>
      </div>`

会出现如下错误信息: Error in directive contextmenu inserted hook: "TypeError: Cannot read property 'addRef' of undefined"

自己解决方法: export default { // 之所以用 inserted 而不是 bind,是需要确保 contentmenu mounted 后才进行 addRef 操作 inserted (el, binding, vnode) { **const node= vnode.context.$refs[binding.arg]||vnode.context.$refs[binding.value] const contextmenu = node instanceof Array? node[0]:node** contextmenu.addRef({ el, vnode }) contextmenu.$contextmenuId = el.id || contextmenu._uid // eslint-disable-line no-underscore-dangle }, } 希望作者能够处理下,支持一下循环下的需求,谢谢!