uniapp directive 在原生 wgt 包不生效 uniapp directive 不生效
需求
- 根据权限编码禁用按钮
- 阻止当前 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']" - 在
directive的bind和inserted两个钩子尝试过,最终确定为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 不生效的更多相关文章
- 【2021/12/31】uniapp之安卓原生插件开发教程
uniapp之安卓原生插件开发教程 准备 hbuilderX,下载 app离线SDK,下载 Andorid Studio,安卓官方或中文社区 证书(可以自己准备,也可以使用android Studio ...
- uni-app&H5&Android混合开发三 || uni-app调用Android原生方法的三种方式
前言: 关于H5的调用Android原生方法的方式有很多,在该片文章中我主要简单介绍三种与Android原生方法交互的方式. 一.H5+方法调用android原生方法 H5+ Android开发规范官 ...
- uniapp+nvue实现仿微信App界面+功能 —— uni-app实现聊天+语音+视频+图片消息
基于uniapp + nvue实现的uniapp仿微信界面功能聊天应用 txim 实例项目,实现了以下功能. 1: 聊天会话管理 2: 好友列表 3: 文字.语音.视频.表情.位置等聊天消息收发 4: ...
- uniapp热更新和整包升级
一. uniapp热更新 (热更新官方文档) 很多人在开发uniapp的时候, 发现热更新失效问题(或者热更新没有更新manifest里的新增模块,SDK,原生插件包括云插件), 其实uniapp官 ...
- 《Android原生整合虹软SDK开发uniapp插件》
1.项目背景 应公司要求,需要开发一套类似人脸打卡功能的app,但是因为我们公司没有很强的原生android开发者,所以根据现状选择了第三方跨平台的uniapp,想必目前大多人都了解这个平台了,我也就 ...
- Cocos Creator 打包原生 Android 包该如何选择 NDK 版本?
大家好,我是晓衡! 记得前段时间,在一些群里看到有小伙伴说 Cocos Creator 打包 Android 原生 APK 有问题:一种是构建失败,一种是运行起来报错. 晓衡也是有好长一段时间,没有碰 ...
- 在Docker容器中运行Spring Boot的jar包 jar外的配置文件无法生效
Spring Boot加载配置文件,默认会从几个固定位置搜索一下看看有没有配置文件 ——application.properties或者bootstrap.properties(如果你使用了sprin ...
- Spring Boot 打war包后自定义404页面不生效解决方法
最近做一个项目,自定义了404页面,本地测试可以到自定义页面,但是打包放到tomcat里面就不行.搞了一天终于看到一个比较正确的方法.下面附上连接,非常感谢各位博主们 1.https://blog.c ...
- windows使用python原生组件包获取系统日志信息
#coding=utf8 import sys import traceback import win32con import win32evtlog import win32evtlogutil i ...
- Windows 10 修改系统环境变量后,CMD生效,Powershell未生效
Windows 10 修改系统环境变量后 1.CMD重新打开,新环境变量已经生效: 2.Shift+右键Powershell重新打开,新环境变量没有生效: 3.貌似服务(Apache24)中使用的环境 ...
随机推荐
- wrangler 13 mwz 脱浆记录
100度水泡了1个小时,一点没缩 70度水泡了3个小时,一点没缩 随后绝望,放洗衣机里洗了20min,缩了2cm 想再接再厉,放洗衣机30min,没缩 放外面晾干,看晾干以后多长吧 --------- ...
- 代码片断:GDI绘制带一定角度的椭圆
//先将DXF文件中的Ellipse 解析到elpList 中 foreach (Ellipse ellipse in elpList) { //定义一个矩形 RectangleF rect = ne ...
- 实验六 开源控制器实践——RYU
(一)基本要求 搭建SDN拓扑,协议使用Open Flow 1.0,并连接Ryu控制器,通过Ryu的图形界面查看网络拓扑. 阅读Ryu文档的The First Application一节,运行当中的L ...
- 在目标服务器Centos7上安装 GitLab Runner
1.安装提示: 注意:如果你打算通过gitlab-ci,将项目部署到"目标服务器"上,那么这个GitLab Runner就要提前安装到这个"目标服务器"上 (这 ...
- LaTeX in 24 Hours - 书籍信息
书籍信息 书名: LaTex in 24 Hours: A Practical Guide for Scientific Writing 作者: Dilip Datta 出版日期: 2017 ISBN ...
- IBM MQ 配置SSL 连接
图示为思路: 下面介绍具体的步骤 参考文档: https://www.jianshu.com/p/2865965a42d9 http://www.hackdig.com/?01/hack-7976.h ...
- UI资源,可在几分钟内创建精美的设计
UI资源,可在几分钟内创建精美的设计 组件:https://headlessui.com 图标:https://icons8.com 插画:https://undraw.co/illustration ...
- ElasticSearch 实现分词全文检索 - Scroll 深分页
目录 ElasticSearch 实现分词全文检索 - 概述 ElasticSearch 实现分词全文检索 - ES.Kibana.IK安装 ElasticSearch 实现分词全文检索 - Rest ...
- 性能的极致,Rust的加持,Zed-Dev编辑器快速搭建Python3.10开发环境
快就一个字,甚至比以快著称于世的Sublime 4编辑器都快,这就是Zed.dev编辑器.其底层由 Rust 编写,比基于Electron技术微软开源的编辑器VSCode快一倍有余,性能上无出其右,同 ...
- Spring Boot 入门学习笔记
0x01 前言 大一选修课C++/JAVA二选一,选学了C++.但在后续课程中,发现JAVA的用途很多,所以简单学习了JAVA的语法.同时,也开始了我的Spring Boot 春季|家 (spri ...