uni-app subNVue 原生子窗体简单使用案例(app端)
<p>开头先放一些需要大概了解的官方文档链接地址</p><p> https://uniapp.dcloud.io/use-weex</p>
<p> https://uniapp.dcloud.io/api/window/subNVues</p>
<p> https://weex.apache.org/zh/docs/api/weex-variable.html</p>
<p> </p>
<p>1、新建一个 uni-app 项目(使用 Hbuilder X)</p>
<p><img src="https://img2020.cnblogs.com/blog/1443576/202010/1443576-20201024001744212-1832009816.png"></p>
<p> </p>
<p>2、项目结构如下( 在 pages 目录下的 index 目录中,新建一个 subNVue 目录,在此目录中新建一个 hello.nvue 的文件 )</p>
<p><img src="https://img2020.cnblogs.com/blog/1443576/202010/1443576-20201024001812402-178611730.png"></p>
<p>3、hello.nvue 内容如下:</p>
<div class="cnblogs_code"><img src="http://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif"><img id="code_img_opened_6838cc4e-5298-45be-adf3-cbd0d0625cad" class="code_img_opened lazyload" style="display: none" data-src="http://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif">
<div id="cnblogs_code_open_6838cc4e-5298-45be-adf3-cbd0d0625cad" class="cnblogs_code_hide">
<pre><template>
<div>
<text class="hello">{{ content }}</text>
</div>
</template>
<script><span style="color: rgba(0, 0, 0, 1)">
export </span><span style="color: rgba(0, 0, 255, 1)">default</span><span style="color: rgba(0, 0, 0, 1)"> {
data() {
</span><span style="color: rgba(0, 0, 255, 1)">return</span><span style="color: rgba(0, 0, 0, 1)"> {
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 父窗体传递过来的内容</span>
content: ''<span style="color: rgba(0, 0, 0, 1)">
}
},
created() {
const vm </span>= <span style="color: rgba(0, 0, 255, 1)">this</span><span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 接收信息的页面</span>
uni.$on('page-popup', (data) =><span style="color: rgba(0, 0, 0, 1)"> {
</span><span style="color: rgba(0, 0, 255, 1)">switch</span><span style="color: rgba(0, 0, 0, 1)">( data.type ){
</span><span style="color: rgba(0, 0, 255, 1)">case</span> 'one'<span style="color: rgba(0, 0, 0, 1)">:
vm.content </span>=<span style="color: rgba(0, 0, 0, 1)"> data.content;
</span><span style="color: rgba(0, 0, 255, 1)">break</span><span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 0, 255, 1)">case</span> 'two'<span style="color: rgba(0, 0, 0, 1)">:
vm.content </span>=<span style="color: rgba(0, 0, 0, 1)"> data.content;
</span><span style="color: rgba(0, 0, 255, 1)">break</span><span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> .... </span>
<span style="color: rgba(0, 0, 0, 1)"> }
});
},
beforeDestroy() {
},
methods: {
}
}
</span></script>
<style><span style="color: rgba(0, 0, 0, 1)">
.hello {
font</span>-<span style="color: rgba(0, 0, 0, 1)">size: 30px;
color: red;
}
</span></style></pre>
</div>
<span class="cnblogs_code_collapse">View Code</span></div>
<p>4、配置 pages.json 文件</p>
<p><img alt="" loading="lazy" src="https://img2020.cnblogs.com/blog/1443576/202010/1443576-20201024002338697-1896357512.png"></p>
<p>5、index.vue 的内容如下</p>
<div class="cnblogs_code"><img src="http://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif"><img id="code_img_opened_4eaf0bb3-1a31-4aa7-9b2b-594a948a726b" class="code_img_opened lazyload" style="display: none" data-src="http://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif">
<div id="cnblogs_code_open_4eaf0bb3-1a31-4aa7-9b2b-594a948a726b" class="cnblogs_code_hide">
<pre><template>
<view class="container">
<view style="<span style="color: rgba(0, 0, 0, 1)">background-color: #0A98D5;
text-align: center;
line-height: 600rpx;
height: 600rpx;
margin-bottom: 20rpx;</span>"><span style="color: rgba(0, 0, 0, 1)">
Hello,word
</span></view>
<button @click="openWindows('one')">点击打开子窗体1</button>
<button @click="openWindows('two')">点击打开子窗体2</button>
<button @click="openWindows('three')">点击打开子窗体3</button>
</view>
</template>
<script><span style="color: rgba(0, 0, 0, 1)">
export </span><span style="color: rgba(0, 0, 255, 1)">default</span><span style="color: rgba(0, 0, 0, 1)"> {
data() {
</span><span style="color: rgba(0, 0, 255, 1)">return</span><span style="color: rgba(0, 0, 0, 1)"> {
}
},
methods: {
openWindows() {
uni.getSubNVueById(</span>'popup'<span style="color: rgba(0, 0, 0, 1)">).show();
const subNVue </span>= uni.getSubNVueById('popup'<span style="color: rgba(0, 0, 0, 1)">);
subNVue.show(</span>'',250<span style="color: rgba(0, 0, 0, 1)">);
}
}
}
</span></script>
<style><span style="color: rgba(0, 0, 0, 1)">
.container {
padding: 20px;
font</span>-<span style="color: rgba(0, 0, 0, 1)">size: 14px;
line</span>-<span style="color: rgba(0, 0, 0, 1)">height: 24px;
}
</span></style></pre>
</div>
<span class="cnblogs_code_collapse">View Code</span></div>
<p> </p>
<p>6、这时效果如下</p>
<p><img alt="" loading="lazy" src="https://img2020.cnblogs.com/blog/1443576/202010/1443576-20201024002708877-2082445927.gif"></p>
<p><span style="color: rgba(255, 0, 0, 1)">如果在子窗体已经增加 一些静态内容并保存后,进行点击打开子窗体操作时,发现还是空白滴........请重启一下....(有可能 Hbuilder X 未同步到文件数据...)</span></p>
<p> 注意:nvue 文件的代码编写与 vue 文件里的代码稍微有些差异。nvue文件代码编写 请看这里:https://weex.apache.org/zh/docs/api/weex-variable.html</p>
<p> </p>
<p>7、下面是我做的一些简单例子</p>
<p><img src="https://img2020.cnblogs.com/blog/1443576/202010/1443576-20201024010548846-1081259327.gif"></p>
<p> </p>
<p>8、由于.....本人比较懒...就直接放案例的地址吧(GitHub .... 怕访问网速太慢... 也放到 gitee上吧 ),有需要可以看源码,里边也有写注释。</p>
<p>GitHub : https://github.com/oukele/uni-app/tree/main/demo-subnvue/demo-subnvue</p>
<p>Gitee:https://gitee.com/oukele/uni-app-demo/tree/master/demo-subnvue/demo-subnvue</p><br><br>
来源:https://www.cnblogs.com/oukele/p/13866900.html
頁:
[1]