vue慕课网音乐项目手记:9-封装一个公用的scroll组件

知道disable是干什么的了,如果不加,scroll的高度会高于内容的高度。

<template>
  <div ref="wrapper">
    <slot></slot>
  </div>
</template>  

<script>
import BScroll from ‘better-scroll‘
export default {
  props: {
    // probeType: 1 滚动的时候会派发scroll事件,会截流。2滚动的时候实时派发scroll事件,不会截流。 3除了实时派发scroll事件,在swipe的情况下仍然能实时派发scroll事件
    probeType: {
      type: Number,
      default: 1
    },
    // click: true 是否派发click事件,通常判断浏览器派发的click还是betterscroll派发的click,可以用event._constructed,若是bs派发的则为true
    click: {
      type: Boolean,
      default: true
    },
    data: {
      type: Array,
      default: null
    }
  },
  mounted () {
    setTimeout(() => {
      this._initScroll()
    }, 20)
  },
  methods: {
    _initScroll () {
      if (!this.$refs.wrapper) {
        return
      }
      this.scroll = new BScroll(this.$refs.wrapper, {
        probeType: this.probeType,
        click: this.click
      })
    },
    enable () {
      // 启用 better-scroll,默认开启
      this.scroll && this.scroll.enable()
    },
    // disable () {
    //   // 禁用 better-scroll
    //   this.scroll && this.scroll.disable()
    // },
    refresh () {
      // 强制 scroll 重新计算,当 better-scroll 中的元素发生变化的时候调用此方法
      this.scroll && this.scroll.refresh()
    }
  },
  watch: {
    data () {
      setTimeout(() => {
        this.refresh()
      }, 20)
    }
  }
}
</script>  

<style scoped>  

</style>  

使用如下:

优化:

原文地址:https://www.cnblogs.com/catbrother/p/9181102.html

时间: 2024-11-07 22:52:52

vue慕课网音乐项目手记:9-封装一个公用的scroll组件的相关文章

vue慕课网音乐项目手记:48-搜索历史数据的处理

因为搜索关键词在多个模块都有使用,所以要在vuex里面去定义和修改. state设置: searchHistory: [] 然后是mutation和types [types.SET_SEARCH_HISTORY] (state, history) { // history接收一个数组 state.searchHistort = history } export const SET_SEARCH_HISTORY = 'SET_SEARCH_HISTORY' 然后是getters export co

vue慕课网音乐项目手记:5-手写滚动轮播图(上)

在这一节,会封装一些公用的函数来添加classname,改变image的宽度. 具体如下: 首先:封装一个slider的组件 <template> <div class="slider" ref="slider"> <div class="slider-group" ref="sliderGroup"> <slot></slot> </div> <d

vue慕课网音乐项目手记:50-搜索列表的点击删除、删除全部的交互事件

<li class="search-item" v-for="(item, index) in searches" :key="index" @click="selectItem(item)"> selectItem (item) { this.$emit('select', item) }, search组件里面调用: <search-list :searches="searchHistory&q

vue慕课网音乐项目手记:52-搜索列表scroll的实现以及scroll底部距离的刷新

首先引入scroll组件,然后使用: <scroll class="shortcut" :data="shortcut" ref="shortcut"> 这里的data是computed计算的来的,因为scroll里面有两组数据: shortcut () { return this.hotKey.concat(this.searchHistory) // 当hotKey和History有一个发生变化的时候.computed就会重新计算

vue慕课网音乐项目手记:6-手写滚动轮播图(中)

active的样式 &.active width: 20px border-radius: 5px background: $color-text-ll 这里有一个问题就是betterscroll在1.0以后的是没有snapLoop的. 所以我安装了0.1.15版本 自动轮播如下 原文地址:https://www.cnblogs.com/catbrother/p/9181079.html

vue慕课网音乐项目手记:30-音乐环形进度条的实现

环形进度条是基于svg实现的. <template> <div class="progress-circle"> <svg :width="radius" :height="radius" viewBox="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg"> <!-- wi

封装一个简单的solrserver组件

一个简单的solrserver组件 实现索引更新的异步处理,以及查询接口,日志/线程池/队列监控没有加上. SolrDocment封装 接口: public interface ISolrDocument { public SolrInputDocument convertToInputDocument() throws Exception; public void buildSolrDocument(SolrDocument document) throws Exception; } 实现:

Vue 实现的音乐项目 music app 知识点总结分享

其他 此应用的全部数据来自 QQ音乐,利用 axios 结合 node.js 代理后端请求抓取 全局通用的应用级状态使用 vuex 集中管理 全局引入 fastclick 库,消除 click 移动浏览器 300ms 延迟 页面是响应式的,适配常见的移动端屏幕,采用 flex 布局 疑难总结 & 小技巧 关于 Vue 知识 & 使用技巧 v-html 可以转义字符,处理特定接口很有用 watch 对象可以观测 属性 的变化 像这种父组件传达子组件的参数通常都是在data()里面定义的,为什

爬取当当网的图书信息之封装一个工具类

把这个类名取为Tool 封装一个下载网页的方法GetHtml public static string GetHtml(string url) { try { WebClient wb = new WebClient(); return wb.DownloadString(url); } catch { return ""; } } 传入的是这个网页的URL,这个方法能帮我们把网页下载下来封装一个匹配图书类URL的的方法 public static ArrayList GetList(