Skip to content

uni-app 打包 app ,自定义指令中删除节点信息失败 #5782

@monkeying-boy

Description

@monkeying-boy

发行方式

App

具体平台

安卓12

开发环境

Windows

项目创建方式

HBuilderX

依赖版本

hbuildx:4.76
package.json 如下

{
  "name": "app",
  "version": "1.0.0",
  "main": "main.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "keywords": [],
  "author": "",
  "license": "ISC",
  "dependencies": {
    "@vant/area-data": "^2.0.0",
    "dayjs": "^1.11.13",
    "h5plus-hotfix": "^1.0.2",
    "image-tools": "^1.4.0",
    "jquery": "^3.6.1",
    "mathjs": "^11.8.0",
    "uview-ui": "^1.8.4"
  }
}

问题描述

本地运行 app 在模拟器中打开,控制台没有报错信息,但是自定义指令没有生效,感觉可能是 没有正确的将 dom 节点删除

重现步骤

项目是vue2,打包成 app 后打开项目发现自定义指令没有生效,在 h5 模式下运行也是没有问题的,然后排查了一下是自定义指令拿到的 el 执行removeChild 函数好像没有真的删除掉节点。
自定义指令逻辑:判断是否有权限没有权限则删除 dom

本地运行到模拟器中 hbuilderx 控制台没有报错信息,并且正确的运行完了代码,但是页面上的节点没有被删除

指令代码如下:

inserted(el, binding, vnode) {
    const { value } = binding
    const all_permission = "*:*:*";
    const permissions = store.getters && store.getters.permissions

    if (value && Array.isArray(value) && value.length > 0) {
      const permissionFlag = value

      const hasPermissions = permissions.some(permission => {
        return all_permission === permission || permissionFlag.includes(permission)
      })

      console.log('是否有权限',hasPermissions)

      if (!hasPermissions) {
        // 执行到这里了
        el.parentNode && el.parentNode.removeChild(el)
        console.log('执行成功')
      }
    } else {
      throw new Error(`请设置操作权限标签值`)
    }
  }

期望行为

No response

实际行为

No response

截图或录屏

No response

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions