欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

weex学习-weexUi加载与wxc-tab-page顶部标签页试用

程序员文章站 2022-07-12 22:39:23
...

weex-ui是阿里出品的搭配weex使用的UI框架,为了开发weex,我就需要开始试着使用weex-ui,我们首先要将weex加载到我们的项目中去

第一步进入我们的项目中,然后打开CMD,输入:

npm i aaa@qq.com -S

这里开发文档上建议node.js版本号是 >= 8.0, 推荐使用 n 来进行版本管理,同时建议 npm 版本 >= 5,同时推荐使用较新版本的weex

然后让我们来安装babel-preset-stage-0 和 babel-plugin-component 插件,前者用于babel编译,后者用于优化 weex-ui 包的组件引用

npm i babel-plugin-component babel-preset-stage-0 -D

同时在项目目录中寻找到.babelrc文件,然后将其中内容修改为

{
  "presets": ["es2015", "stage-0"],
  "plugins": [
    [
      "component",
      {
        "libraryName": "weex-ui",
        "libDir": "packages",
        "style": false
      }
    ]
  ]
}

直接复制使用即可,然后在我们的vue页面中,使用import引入我们需要使用的weex组件,代码如下:

import { WxcButton, WxcPopup /*这里填写需要使用的组件,组件名可以去官方文档寻找,逗号隔开*/ } from 'weex-ui';

这样我们就可以开始使用weex-ui了,下面是一段从官方文档中复制,关于wxc-tab-page,也就是weex-ui中的顶部导航栏的代码,然后在其中添加了axios请求数据接口,通过请求的数据修改了导航栏的名称

<template>
  <wxc-tab-page ref="wxc-tab-page"
                :tab-titles="topic"
                :tab-styles="tabStyles"
                title-type="icon"
                :tab-page-height="tabPageHeight"
                @wxcTabPageCurrentTabSelected="wxcTabPageCurrentTabSelected">
    <list v-for="(v,index) in tabList"
          :key="index"
          class="item-container"
          :style="{ height: (tabPageHeight - tabStyles.height) + 'px' }">
      <cell class="border-cell"></cell>
      <cell v-for="(demo,key) in v"
            class="cell"
            :key="key">
        <wxc-pan-item :ext-id="'1-' + (v) + '-' + (key)"
                      url="https://h5.m.taobao.com/trip/ticket/detail/index.html?scenicId=2675"
                      @wxcPanItemPan="wxcPanItemPan">
          <div class="content">
            <text>{{key}}</text>
          </div>
        </wxc-pan-item>
      </cell>
    </list>
  </wxc-tab-page>
</template>

<style scoped>
  .item-container {
    width: 750px;
    background-color: #f2f3f4;
  }

  .border-cell {
    background-color: #f2f3f4;
    width: 750px;
    height: 24px;
    align-items: center;
    justify-content: center;
    border-bottom-width: 1px;
    border-style: solid;
    border-color: #e0e0e0;
  }

  .cell {
    background-color: #ffffff;
  }

  .content{
    width:750px;
    height:300px;
    border-bottom-width:1px;
    align-items: center;
    justify-content: center;
  }
</style>
<script>
  const dom = weex.requireModule('dom');
  import { WxcTabPage, WxcPanItem, Utils, BindEnv } from 'weex-ui';

  // https://github.com/alibaba/weex-ui/blob/master/example/tab-page/config.js
  import Config from '../config'
  import Vue from 'vue'
  export default {
    components: { WxcTabPage, WxcPanItem },
    data: () => ({
      topic:[],
      tabTitles: Config.tabTitles,
      tabStyles: Config.tabStyles,
      tabList: [],
      demoList: [1, 2, 3, 4, 5, 6, 7, 8, 9],
      tabPageHeight: 1334
    }),
    created () {
      this.tabPageHeight = Utils.env.getPageHeight();
      this.tabList = [...Array(this.tabTitles.length).keys()].map(i => []);
      Vue.set(this.tabList, 0, this.demoList);
      this.axios({
        method:'post',
        data:{
          userId:'',
          page:'1'
        },
        url:url
      }).then((response) =>{          //这里使用了ES6的语法
        console.log(response)       //请求成功返回的数据
        this.topic=response.data.data.bbsTopic
        console.log(this.topic)
      }).catch((error) =>
        console.log(error)//请求失败返回的数据
      )
    },
    methods: {
      wxcTabPageCurrentTabSelected (e) {
        const self = this;
        const index = e.page;
        /* Unloaded tab analog data request */
        if (!Utils.isNonEmptyArray(self.tabList[index])) {
          setTimeout(() => {
            Vue.set(self.tabList, index, self.demoList);
          }, 100);
        }
      },
      wxcPanItemPan (e) {
        if (BindEnv.supportsEBForAndroid()) {
          this.$refs['wxc-tab-page'].bindExp(e.element);
        }
      }
    }
  };
</script>

这时候出现了一个问题,因为weexUi导航栏加载数据的时候, :tab-titles的取值取到的是数组中title参数,而我的接口中没有title这个参数,结果导致导航栏加载完成后就是空白的,为了解决这个问题,我们需要找到node_modules文件夹下我们安装week-ui文件夹,然后找到其中的wxc-tab-page文件夹下的index.vue

 weex学习-weexUi加载与wxc-tab-page顶部标签页试用

 然后找到下面的代码

weex学习-weexUi加载与wxc-tab-page顶部标签页试用

 看到其中的v.title了吗,记得,有两个

:aria-label="`${v.title?v.title:'标签'+index}`">

以及

 class="tab-text">{{v.title}}</text>

将title修改成你需要调用的参数名,这样就可以加载成功

今天的笔记就到这里

谢谢观看

我是你们的狐狸