# SubNViewDemo
**Repository Path**: mqy1023/SubNViewDemo
## Basic Information
- **Project Name**: SubNViewDemo
- **Description**: uniapp 使用subNVue原生子窗体解决web-view等原生页面中弹框无法显示的问题
- **Primary Language**: Unknown
- **License**: MulanPSL-2.0
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 1
- **Forks**: 0
- **Created**: 2021-10-12
- **Last Updated**: 2025-11-17
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
> 问题: 使用web-view或者video组件时,h5端的编写的`fixed布局`或其他`popup`弹框页面无法显示
> 解决方案:使用`subNVue`这个原生子窗体的方法去解决APP端打开弹窗显示弹窗被覆盖
> 注意事项: 1、`subNVue`这个原生子窗体的后缀必须是`.nue`
> 2、样式不支持scss,只能一个个样式`.className {}` 不能嵌套
> 3、`subNVue`只支持在手机上运行
[官方:uni-app subNVue 原生子窗体开发指南](https://ask.dcloud.net.cn/article/35948)
#### 一、创建一个`shareSubNVue`文件夹,文件夹下创建一个`popup.nvue`文件

```javascript
微信
朋友圈
COPY链接
```
#### 二、`pages.json`中配置subNVue文件路径和样式配置
```json
"pages": [ //pages数组中第一项表示应用启动页,参考:https://uniapp.dcloud.io/collocation/pages
{
"path": "pages/index/index",
"style": {
"navigationBarTitleText": "SubNView demo",
"app-plus": {
"titleNView": {
"buttons": [{
"text": "分享", //需要显示的文字
"fontSize": "15", //字号
"float": "right", //浮动
"color": "#FFFFFF", //字体颜色
"width": "auto" //设置宽度
}]
},
"subNVues": [{
"id": "popup", // 唯一标识id
"path": "pages/index/shareSubNVue/popup", // 页面路径
"type": "popup", //原生子窗口内置样式,可取值:'popup',弹出层;"navigationBar",导航栏
"style": { // 底部显示
"position": "absolute",
"margin":"auto",
"width":"100%",
"height": "320upx",
"bottom": "0"
}
}]
}
}
}
],
```
#### 三、页面中调用
父子页面传输数据,使用`uni.$emit`方法去实现要传递的数据, 使用`uni.$on`方法去实现接收数据
```javascript
uni.$emit('data-send', { })
uni.$on('data-send', data => { })
```
`index.vue` 中调启子窗口
```javascript
const subNVue = uni.getSubNVueById('popup'); // 对应page.json的id
// 向子窗体传递参数
uni.$emit('from-parent',{
type: '1',
content: '父给子参数1'
})
// 1:子窗体从顶部进入(动画效果), 2:显示原生子窗体的动画持续时间
subNVue.show('slide-out-top', 250)
```
**页面效果如下**
