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)中使用的环境 ...
随机推荐
- lisp入门资料收集
1.一些文档 http://acl.readthedocs.io/en/latest/zhCN/index.html http://daiyuwen.freeshell.org/gb/lisp.htm ...
- 腾讯云等Linux环境下Redis安装配置
1.下载redis解压安装命令教程 https://www.cnblogs.com/hunanzp/p/12304622.html 2.配置远程连接 修改bind 127.0.0.0 为 bind ...
- UMA插件专题(一)——基础网格创建
什么是UMA? UMA,Unity Multipurpose Avatar,是一个开源Avatar创建框架,通过它可以实现自定义人物(或任何生物)的模型,包括换装,改变身材样貌等功能. 现在先从UMA ...
- vue3.0知识整理与总结
在性能方面,对比Vue2.x,性能提升了1.3~2倍左右:打包后的体积也更小了. 非兼容的功能 一些和Vue2.x版本改动较大的语法,在Vue3存在兼容问题 v-modal 组件通信 v-for ...
- HTTP通信基础
1. HTTP通信流程: 1)输入www.baidu.com2)解析成IP地址:192.168.0.13)浏览器通过该IP访问web服务器获取web资源4)再返回给客户端5)最后呈现在用户面前 2. ...
- 几行代码,把zip文件直接破解
几行代码,把zip文件直接破解,不想讲解了,如果要使用就直接复制吧,讲解挺累的 import itertools import zipfile import os filename = "z ...
- mac git远程仓库错误解决方法
mac更新后不知道怎么回事,git时出现了 Permission denied (publickey). 经查询后得出原因 1.首先给git进行config的配置 git config --globa ...
- 【项目实战】SpringBoot+uniapp+uview2打造一个企业黑红名单吐槽小程序
logo 避坑宝 v1.0.0 基于SpringBoot+uniapp企业黑红名单吐槽小程序 项目介绍 避坑宝 [避坑宝]企业黑红名单吐槽小程序是一个具有吐槽发布企业信息的一个平台,言论自由,评判自定 ...
- Androidstudio连接SQLite数据库报错not such table的相关解决
错误展示 明明就是按照创建第一个表的步骤来的,然后就是死活创建不出来第二张表,离谱啊家人们! 错误解决 针对于这个错误,只需要在SQLite类里面,将其中的version变量的值更改为更高版本即可: ...
- 音频的价值、AI Codec 的意义与算法能力的边界丨一期一会 • 音频工程师专场
前言 音频技术发展到今天,经历了从模拟音频到数字音频到历程.国际音频工程师协会创建于 1948 年,中国数字音频技术起步相对较晚,长期被国外组织和公司垄断.随着中国的不断发展.科技日益进步,经过近三十 ...