平安的刘 發表於 2020-10-23 23:52:00

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>&nbsp;</p>
<p>1、新建一个 uni-app 项目(使用 Hbuilder X)</p>
<p><img src="https://img2020.cnblogs.com/blog/1443576/202010/1443576-20201024001744212-1832009816.png"></p>
<p>&nbsp;</p>
<p>2、项目结构如下( 在&nbsp; 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>&lt;template&gt;
    &lt;div&gt;
      &lt;text class="hello"&gt;{{ content }}&lt;/text&gt;
    &lt;/div&gt;
&lt;/template&gt;

&lt;script&gt;<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) =&gt;<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>&lt;/script&gt;

&lt;style&gt;<span style="color: rgba(0, 0, 0, 1)">
    .hello {
      font</span>-<span style="color: rgba(0, 0, 0, 1)">size: 30px;
      color: red;
    }
</span>&lt;/style&gt;</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>&lt;template&gt;
    &lt;view class="container"&gt;
      &lt;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>"&gt;<span style="color: rgba(0, 0, 0, 1)">
            Hello,word
      </span>&lt;/view&gt;
      &lt;button @click="openWindows('one')"&gt;点击打开子窗体1&lt;/button&gt;
      &lt;button @click="openWindows('two')"&gt;点击打开子窗体2&lt;/button&gt;
      &lt;button @click="openWindows('three')"&gt;点击打开子窗体3&lt;/button&gt;
    &lt;/view&gt;
&lt;/template&gt;

&lt;script&gt;<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>&lt;/script&gt;

&lt;style&gt;<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>&lt;/style&gt;</pre>
</div>
<span class="cnblogs_code_collapse">View Code</span></div>
<p>&nbsp;</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>&nbsp;注意:nvue 文件的代码编写与 vue 文件里的代码稍微有些差异。nvue文件代码编写 请看这里:https://weex.apache.org/zh/docs/api/weex-variable.html</p>
<p>&nbsp;</p>
<p>7、下面是我做的一些简单例子</p>
<p><img src="https://img2020.cnblogs.com/blog/1443576/202010/1443576-20201024010548846-1081259327.gif"></p>
<p>&nbsp;</p>
<p>8、由于.....本人比较懒...就直接放案例的地址吧(GitHub .... 怕访问网速太慢... 也放到 gitee上吧&nbsp; ),有需要可以看源码,里边也有写注释。</p>
<p>GitHub :&nbsp;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]
查看完整版本: uni-app subNVue 原生子窗体简单使用案例(app端)