Mint UI 使用mt-loadmore等组件

背景

项目需要移动端页面,于是就采用了mintUI进行开发。用着用着,有些地方写不出想要的效果,最后加入elementUI,还是elementUI好用。这个做出了的效果适配性很强,但是我还是觉得用uniApp更适合移动端开发。主要介绍我在项目中用的组件。官网地址半天进不去,我使用的是w3c的。 https://www.w3cschool.cn/mintui/

 

点击事件

这个地方引用官网的原文,做着做着发现点击事件用不了,回头一看官网,en.....

关于事件绑定

在 Vue 2.0 中,为自定义组件绑定原生事件必须使用 .native 修饰符:

<my-component @click.native="handleClick">Click Me</my-component>

从易用性的角度出发,我们对 Button 组件进行了处理,使它可以监听 click 事件:

<mt-button @click="handleButtonClick">Click Me</mt-button>

但是对于其他组件,还是需要添加 .native 修饰符。

mt-navbar 顶部选项卡

例如,需要做一个顶部的筛选,先筛选区域,1的区域出现mt-radio单选框列出所有的区域选项。需要注意options接受的一个数组,和elmentUI相似,需要提供的options是符合要求的。但没有事件可以触发,意味着你得在下面在加个点击按钮。当然你做的是点一下筛一下,也是可以的。

options:['选项A', '选项B', '选项C']

options :[ {label: '被禁用',value: '值F',disabled: true }]

<mt-navbar v-model="selected">
  <mt-tab-item id="1">区域</mt-tab-item>
  <mt-tab-item id="2">价格</mt-tab-item>
  <mt-tab-item id="3">户型</mt-tab-item>
  <mt-tab-item id="4">更多</mt-tab-item>
</mt-navbar>

<mt-tab-container v-model="selected">
  <mt-tab-container-item id="1">
  <!-里面写自己的内容-->
  <mt-radio align="right" v-model="filter.reginId"  :options="array.regin">
  </mt-radio>
  </mt-tab-container-item>
  <mt-tab-container-item id="2>
   <!-里面写自己的内容-->
  </mt-tab-container-item>
  <mt-tab-container-item id="3">
   <!-里面写自己的内容-->
  </mt-tab-container-item>  
 <mt-tab-container-item id="4">
  <!-里面写自己的内容-->
 </mt-tab-container-item>
</mt-tab-container>

mt-popup 弹出框

点击、触发底部弹窗,修改性别

<mt-field label="性别"   @click.native="popupVisible = true"  placeholder="" v-model="userData.gender"></mt-field>
<!--底部弹出-->
<mt-popup style="width:100%" v-model="popupVisible" position="bottom">
  <mt-radio label="性别" v-model="userData.gender" :options="['男', '女']"></mt-radio>
</mt-popup>

 

mt-loadmore下拉/上拉刷新

列表的核心功能,首页mt-loadmore必有一个父级,需要给定overflow:scroll,或者固定高度,autoFill默认为true,他会去自动检测并撑满其容器,我用的false。

<template>
  <div>
    <div style="overflow:scroll">
      <!--二手房数据-->
      <mt-loadmore :top-method="loadTop" :bottom-method="loadBottom" :bottom-all-loaded="allLoaded" ref="loadmore" :auto-fill="false">
        <div class="Sudoku new" v-for="item in list" :key="item.id" @click="open(item.id)" style="border-bottom:2px solid #e8e8e8">
          <div class="SudokuListImg">
          <!--循环数据渲染,自己写-->
        </div>
        <div v-if="list.length > 0 && allLoaded">
          <el-divider content-position="center">我也是有底线的</el-divider>
        </div>
        <div v-if="list.length === 0">
          <el-divider content-position="center">未查询到数据!</el-divider>
        </div>
      </mt-loadmore>
    </div>
  </div>
</template>

<script>

export default {

  data() {
    return {
      allLoaded: false,
      filter: {
        keyword: "",
        page: 1,
        limit: 4,
        createAt: null,
        createEnd: null
      },
      list: [],
      total: 0
    };
  },
  created() {
    this.loadTop();
  },
  methods: {
    // 父控件要加上高度,否则会出现上拉不动的情况
    loadTop() {
      // 回到首页
      this.filter.page = 1;
      api.page(this.filter).then(res => {
        if (res.data.code === 200) {
          this.list = res.data.data;
          this.total = res.data.total;
          this.allLoaded = false;
          if (this.filter.page * this.filter.limit >= this.total) {
            this.allLoaded = true;
          }
          // 最后需要手动调用 loadmore 的 onTopLoaded 事件。这是因为在加载数据后需要对组件进行一些重新定位的操作。
          this.$refs.loadmore.onTopLoaded();
        }
      });
    },
    // loadmore 在初始化时会自动检测它的高度是否能够撑满其容器,如果不能则会调用 bottom-method
    loadBottom() {
      this.filter.page = this.filter.page + 1;
      api.secondPage(this.filter).then(res => {
        if (res.data.code === 200) {
          this.list = this.list.concat(res.data.data);
          this.total = res.data.total;
          if (this.filter.page * this.filter.limit >= this.total) {
            this.allLoaded = true;
          }
          this.$refs.loadmore.onBottomLoaded();
        }
      });
    }
  }
};
</script>
<style lang="less" scoped>
// 样式被干掉了
</style>

 

最后来个图

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值