当前位置: 首页 > news >正文

【uniapp】原生子窗体subNvue的使用与踩坑

需求

最近接到个需求, 需要在video组件上弹出弹窗, 也就是覆盖video这个原生组件
未播放时, 弹窗可以覆盖, 但是当video播放时, 写的弹窗就覆盖不了了
因为video是原生组件, 层级非常高, 普通标签是覆盖不了的, map标签同理
覆盖原生组件, 官方给出解决办法一. 使用cover-view标签 二. 使用subNvue原生子窗体, 或者Nvue
此处因为弹窗样式比较多元, cover-view不支持嵌套, 故选择使用subNvue来写这个弹窗

实现

1. pages.json配置

我这个页面配置了两个subnvue

		{"path": "pages/player/player1","style": {"navigationBarTitleText": "","enablePullDownRefresh": false,"app-plus": {// 将回弹属性关掉"bounce": "none","popGesture": "none","subNVues": [{"id": "newMetalModal", // 唯一标识  "path": "pages/player/subNVue/newMetalModal", // 页面路径  // "type": "popup",  // 这里不需要"style": {"position": "absolute","dock": "top","background": "transparent","margin": "auto"}}, {"id": "cardSuccessModal", // 唯一标识  "path": "pages/player/subNVue/cardSuccessModal", // 页面路径  // "type": "popup",  // 这里不需要"style": {"position": "absolute","dock": "top","background": "transparent","margin": "auto"}}]}}}, 

2. 创建nvue文件

官方给出nvue开发的注意事项, 和vue写法的区别, 在此不赘述
传送门 https://uniapp.dcloud.net.cn/tutorial/nvue-outline.html#nvue%E4%BB%8B%E7%BB%8D

3. 窗体引用与通信

	const subNVue = uni.getSubNVueById('newMetalModal') //设置子窗体subNVue.show('slide-in-left', 200, () => {uni.$emit('sendMetalList', {  // 与子窗体通信metalList: this.metalList,});})
	uni.$on('sendMetalList', data => {his.metalList = data.metalList;});

踩坑记录

  1. 窗体最外部div不能使用v-for循环, 否则会整个窗体不显示, 需要做循环的话, 可以在里层做循环
  2. css 背景不支持渐变linear-gradient, 不会生效
  3. 界面与窗体通信时, uni.$emit() 需要写在subNVue.show() 回调内, 否则通信失败
    在这里插入图片描述
  4. 只有text标签可以设置字体大小,字体颜色。因此文字需要text标签内
  5. 开发过程中发现修改文件后在真机编译时, 有时并不能实时编译, 比如在pages.json配置第二个窗体, 真机没有生效, 需要重新运行才行
  6. 若界面打开就时不需要显示窗体, onLoad钩子里需要首先subNvue.hide(), 通过事件再调用show(), 否则界面打开时就会显示窗体

虽然原生窗体实现覆盖原生标签的作用, 但开发起来坑是一个接一个的,
不支持hbx调试, 必须真机, 而且有时不能实时编译
样式和标签使用上都有局限, 样式上特别是整个窗体的样式控制不是很灵活
页面对窗体显示隐藏的控制也没那么灵活, 类似dom元素的控制

subnvue和nvue还存在安卓和ios的兼容问题, 具体这里不细述了 , 主要时间太久忘了~~~~

http://www.lryc.cn/news/116393.html

相关文章:

  • 浅析 C 语言的共用体、枚举和位域
  • TartanVO: A Generalizable Learning-based VO 论文阅读
  • 单例模式-java实现
  • 篇八:装饰器模式:动态增加功能
  • 算法通关村第五关——n数之和问题解析
  • 小白到运维工程师自学之路 第七十集 (Kubernetes集群部署)
  • docker 部署mysql 5.6集群
  • mysql基本信息查询
  • C语言初学者必读:使用for循环将数字从大到小排序并输出
  • 【Vue+Element-plus】记录后台首页多echart图静态页面
  • BM5 合并k个已排序的链表 javascript
  • 1.利用matlab建立符号表达式(matlab程序)
  • LVS工作环境配置
  • 金蝶,「起舞」在大模型时代
  • 解决Vs Code工具开发时 保存React文件时出现乱码情况
  • Fastjson 使用指南
  • 阿里云内容审核服务使用(图片审核)
  • git撤回最近一次push操作
  • 2000-2022年上市公司环境不确定性(原始数据+测算代码+测算结果)
  • 网络基本概念
  • 2.安装Docker-ce
  • Redis-2
  • 一分钟了解下Java追随和适应云原生的手段之Java Native Build(JNB)
  • Flutter iOS 与 flutter 相互通信
  • OpenCV和PIL图像对象转换
  • IDEA的实用快捷键大全
  • 04-6_Qt 5.9 C++开发指南_QListWidget和QToolButton
  • 笔试错题不熟悉 积累
  • Adb发送特定广播给App和App获取权限的命令
  • 字节C++后端面试总结