需求

  • 根据权限编码禁用按钮
  • 阻止当前 dom 绑定的点击事件,禁用状态(opacity 半透明?? 或者 display: none?? )

尝试

  • 开发环境用 Chrome 跑,一切正常,构建打包后去真机跑,按钮没控制住
  • (用 HBX -发行-原生应用 app 制作 wgt 包)开发环境: HBX: 3.7.9 系统: MacOS: 13.0.1 (Intel)
  • 通过 directive 绑定一个 v-auth 指令,在标签里 v-auth="’some auth code‘" 或者 v-auth="['code1', 'code2']"
  • directivebindinserted 两个钩子尝试过,最终确定为 el 在真机环境下,与开发环境的el 不是一个玩意

暂用平替方案

  • 全局 mixin 一个方法,判断权限后返回以控制当前 dom 是否可点击
// path/auth.js
function checkAuth(value) {
if (
value === "" ||
(value instanceof Array && value.length === 0) ||
!value
) {
return true;
}
const _value = [value].flat(); // 兼容入参为 string 和 array,拍平二维数组
const authBtns = uni.getStorageSync("authBtns");
if (authBtns === "*") return true;
const hasPermission = _value.every((e) => authBtns.includes(e));
return hasPermission;
}
const auth = {
install(Vue) {
// directive 在 app 下无法正常使用
// Vue.directive("auth", {
// bind(el, binding, vnode, oldVnode) {
// if (!checkAuth(binding.value, el)) {
// el.style.opacity = "0.3";
// el.style.pointerEvents = "none";
// }
// },
// inserted(el, binding, vnode, oldVnode) {
// if (!checkAuth(binding.value, el)) {
// el.style.opacity = "0.3";
// el.style.pointerEvents = "none";
// }
// },
// });
// 平替方案
Vue.mixin({
methods: {
$auth(val) {
if (!checkAuth(val)) {
return [{ opacity: "0.3", pointerEvents: "none" }];
}
return [];
},
},
});
},
}; // path/main.js
Vue.use(auth);
  • vue文件中
<view :style="$auth('AUTH_CODE')">没有权限 AUTH_CODE 别点我</view>
<view :style="$auth(['CODE1', 'CODE2'])">没有权限 CODE1&2 别点我</view>
// 多个行内 style 情况
<view :style="[...$auth('AUTH_CODE'), {color: 'green', fontSize: '22px', fontWeight: 600}]">没有权限 AUTH_CODE 别点我</view>

写在最后

官方 uni 文档写着支持 app 用 directive ,可能是我姿势不对,没用对吧。。

uniapp directive 在原生 wgt 包不生效 uniapp directive 不生效的更多相关文章

  1. 【2021/12/31】uniapp之安卓原生插件开发教程

    uniapp之安卓原生插件开发教程 准备 hbuilderX,下载 app离线SDK,下载 Andorid Studio,安卓官方或中文社区 证书(可以自己准备,也可以使用android Studio ...

  2. uni-app&H5&Android混合开发三 || uni-app调用Android原生方法的三种方式

    前言: 关于H5的调用Android原生方法的方式有很多,在该片文章中我主要简单介绍三种与Android原生方法交互的方式. 一.H5+方法调用android原生方法 H5+ Android开发规范官 ...

  3. uniapp+nvue实现仿微信App界面+功能 —— uni-app实现聊天+语音+视频+图片消息

    基于uniapp + nvue实现的uniapp仿微信界面功能聊天应用 txim 实例项目,实现了以下功能. 1: 聊天会话管理 2: 好友列表 3: 文字.语音.视频.表情.位置等聊天消息收发 4: ...

  4. uniapp热更新和整包升级

    一. uniapp热更新  (热更新官方文档) 很多人在开发uniapp的时候, 发现热更新失效问题(或者热更新没有更新manifest里的新增模块,SDK,原生插件包括云插件), 其实uniapp官 ...

  5. 《Android原生整合虹软SDK开发uniapp插件》

    1.项目背景 应公司要求,需要开发一套类似人脸打卡功能的app,但是因为我们公司没有很强的原生android开发者,所以根据现状选择了第三方跨平台的uniapp,想必目前大多人都了解这个平台了,我也就 ...

  6. Cocos Creator 打包原生 Android 包该如何选择 NDK 版本?

    大家好,我是晓衡! 记得前段时间,在一些群里看到有小伙伴说 Cocos Creator 打包 Android 原生 APK 有问题:一种是构建失败,一种是运行起来报错. 晓衡也是有好长一段时间,没有碰 ...

  7. 在Docker容器中运行Spring Boot的jar包 jar外的配置文件无法生效

    Spring Boot加载配置文件,默认会从几个固定位置搜索一下看看有没有配置文件 ——application.properties或者bootstrap.properties(如果你使用了sprin ...

  8. Spring Boot 打war包后自定义404页面不生效解决方法

    最近做一个项目,自定义了404页面,本地测试可以到自定义页面,但是打包放到tomcat里面就不行.搞了一天终于看到一个比较正确的方法.下面附上连接,非常感谢各位博主们 1.https://blog.c ...

  9. windows使用python原生组件包获取系统日志信息

    #coding=utf8 import sys import traceback import win32con import win32evtlog import win32evtlogutil i ...

  10. Windows 10 修改系统环境变量后,CMD生效,Powershell未生效

    Windows 10 修改系统环境变量后 1.CMD重新打开,新环境变量已经生效: 2.Shift+右键Powershell重新打开,新环境变量没有生效: 3.貌似服务(Apache24)中使用的环境 ...

随机推荐

  1. 【帆吖】Java学习零基础17

    Java方法 1 package method; 2 3 public class Demo1 { 4 //main方法 5 public static void main(String[] args ...

  2. Java题目集 函数

    6-1 汽车类 (20 分)   编写汽车类,其功能有启动(start),停止(stop),加速(speedup)和减速(slowDown),启动和停止可以改变汽车的状态(on/off),初始时状态为 ...

  3. 火狐浏览器调试eval源码

    火狐浏览器调试eval源码 firefox浏览器在网页调试上,有一个没法和chrome一比高下的功能,就是eval脚本的调试,有时前端架构使用了基于eval的方式,有时候可能是自己一个多行函数,每每遇 ...

  4. 删除Mac版word上方的Mathtype

    原因 Mac升级到macOS Catalina v10.15.3发现mathtype用不了, Mathtype官网说目前暂时不支持这个版本的系统. 现在尴尬的是, mathtype删除了, 但一不小心 ...

  5. Maven项目的创建教程

    1.创建Maven项目 首先File->New新建一个Maven项目,选择相应地址保存,点击CREATE完成新建 2.改成Web项目 右键选择Add Framework Support... 再 ...

  6. Spring--AOP简介+入门案例

    AOP简介 面向切面编程:在不惊动原始设计的基础上,进行功能增强 各个要应用该功能的对象叫做连接点,那个功能叫做通知,表面上的代码没有发生变化,私下里发生变化的连接点,会出现切入点,切入点与通知通过切 ...

  7. Apache Kafka教程--Kafka新手入门

    Apache Kafka教程--Kafka新手入门 Kafka Assistant 是一款 Kafka GUI 管理工具--管理Broker,Topic,Group.查看消费详情.监控服务器状态.支持 ...

  8. linux服务器已知目录下根据特定字符串查找文件

    很久不用的一个项目的测试环境迁移后,启动项目时,发现日志一直报错,在opt/下缺少一个jar包,思路是:查看配置文件,想找到具体是哪个配置文件写了需要用到这个jar包,然后修改到正确路径下重新启动尝试 ...

  9. 从零开始学习Java系列之Java运行机制与跨平台特性

    全文大约[4000]字,不说废话,只讲可以让你学到技术.明白原理的纯干货!并带有丰富的案例及配图,让你更好地理解和运用文中的技术概念,给你带来具有足够启迪的思考-- 在上一篇文章中,壹哥给大家介绍了J ...

  10. Windows Server 远程桌面(RDP)使用公网可信机构所签发的SSL证书的方法

    Windows Server 远程桌面默认使用系统自签名证书,在任何终端进行远程桌面登录时均会提示证书告警 虽然可以通过勾选下方"不再询问我是否连接到此计算机"选项使之后登录不再提 ...