Angular中使用better-scroll插件的方法


Posted in Javascript onMarch 27, 2018

better-scroll的使用

由于需要在一个固定的的高度做无限滚动,本来css的overflow-y也可以完成的,奈何安卓不是很流畅,还很生硬,就是用了第三方库better-scroll,配合angular的ng-content。angular的ng-content和vue的插槽很像,里面一些不确定的内容可以通过ng-content投影进去。

安装better-scroll

1: npm install better-scroll --save

2: 安装types npm install better-scroll @types/better-scroll --save

3:在angular-cli里面引入

listscroll组件的编写

根据官方的文档可以看出,better-scroll对dom的结构是有要求的,最外层的wrapper那一层是需要固定高度的,里面那一层content是根据内容的高度来撑起的。

html部分:

<div class="scroll" #scroll>
 <ng-content></ng-content>
</div>

ng-content就是要投影进来的内容

component.ts部分

1: import引入 BScroll

2:在OnInit这个钩子里面来初始化,由于OnInit的时候,ngFor还没执行完毕,所以就加了一个定时器来延迟。

import { Component, OnInit, Input, ElementRef, ViewChild } from '@angular/core';
declare let BScroll;
@Component({
 selector: 'app-listscroll',
 templateUrl: './listscroll.component.html',
 styleUrls: ['./listscroll.component.css']
})
export class ListscrollComponent implements OnInit {

 @ViewChild('scroll') scrollEl: ElementRef;
 @Input()
 private height: number;

 public scroll;
 constructor() { }

 ngOnInit() {
 
  // 设置高度
  this.scrollEl.nativeElement.style.height = `${this.height}px`; 
  
  // 初始化
  setTimeout(() => {
   this.scroll = new BScroll(this.scrollEl.nativeElement, {click: true});
  }, 20);
 }

}

在其他组件里面使用listscroll组件

<app-listscroll [height]="height">
 <ul>
   <li class="item" *ngFor="let item of list; let num = index;">第{{num}}个</li>
 </ul>
</app-listscroll>

总结

这样better-scroll简单的使用就完成,当然better-scroll还有很多功能,可以依赖它做上拉和下拉的加载,做轮播图等等,具体可参考官方的文档。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
Javascript 更新 JavaScript 数组的 uniq 方法
Jan 23 Javascript
JS图片预加载 JS实现图片预加载应用
Dec 03 Javascript
使用GruntJS链接与压缩多个JavaScript文件过程详解
Aug 02 Javascript
使用js获取图片原始尺寸
Dec 03 Javascript
基于jQuery的JavaScript模版引擎JsRender使用指南
Dec 29 Javascript
JavaScript自定义数组排序方法
Feb 12 Javascript
jQuery实现切换字体大小的方法
Mar 10 Javascript
JavaScript中利用Array和Object实现Map的方法
Jul 27 Javascript
以jQuery中$.Deferred对象为例讲解promise对象是如何处理异步问题
Nov 13 Javascript
一个字符串中出现次数最多的字符 统计这个次数【实现代码】
Apr 29 Javascript
JS判断来路是否是百度等搜索索引进行弹窗或自动跳转的实现代码
Oct 09 Javascript
vue axios 在页面切换时中断请求方法 ajax
Mar 05 Javascript
使用node打造自己的命令行工具方法教程
Mar 26 #Javascript
详解Vue 全局引入bass.scss 处理方案
Mar 26 #Javascript
js构建二叉树进行数值数组的去重与优化详解
Mar 26 #Javascript
红黑树的插入详解及Javascript实现方法示例
Mar 26 #Javascript
js+canvas实现滑动拼图验证码功能
Mar 26 #Javascript
JS从非数组对象转数组的方法小结
Mar 26 #Javascript
深入理解Node module模块
Mar 26 #Javascript
You might like
几种有用的变型 PHP中循环语句的用法介绍
2012/01/30 PHP
PHP开发工具ZendStudio下Xdebug工具使用说明详解
2013/11/11 PHP
5款适合PHP使用的HTML编辑器推荐
2015/07/03 PHP
jQuery1.5.1 animate方法源码阅读
2011/04/05 Javascript
JavaScript中发布/订阅模式的简单实例
2014/11/05 Javascript
js中this用法实例详解
2015/05/05 Javascript
详解JavaScript编程中正则表达式的使用
2015/10/25 Javascript
Bootstrap基本组件学习笔记之面板(14)
2016/12/08 Javascript
BootStrap 模态框实现刷新网页并关闭功能
2017/01/04 Javascript
整理关于Bootstrap模态弹出框的慕课笔记
2017/03/29 Javascript
vue-router路由参数刷新消失的问题解决方法
2017/06/17 Javascript
解决vue2.x中数据渲染以及vuex缓存的问题
2017/07/13 Javascript
浅谈vue的几种绑定变量的值 防止其改变的方法
2018/03/01 Javascript
Vue CLI3搭建的项目中路径相关问题的解决
2018/09/17 Javascript
vue通过数据过滤实现表格合并
2020/11/30 Javascript
JS操作字符串转数字的常见方法示例
2019/10/29 Javascript
JS实现动态倒计时功能(天数、时、分、秒)
2019/12/12 Javascript
[59:08]DOTA2上海特级锦标赛C组小组赛#2 LGD VS Newbee第一局
2016/02/27 DOTA
[49:35]LGD vs OG 2018国际邀请赛淘汰赛BO3 第二场 8.25
2018/08/29 DOTA
Python实现基于HTTP文件传输实例
2014/11/08 Python
浅谈python中的变量默认是什么类型
2016/09/11 Python
Python基于tkinter模块实现的改名小工具示例
2017/07/27 Python
Python之批量创建文件的实例讲解
2018/05/10 Python
TensorFlow实现模型评估
2018/09/07 Python
学习python分支结构
2019/05/17 Python
使用pyinstaller打包PyQt4程序遇到的问题及解决方法
2019/06/24 Python
python制作微博图片爬取工具
2021/01/16 Python
用CSS3实现瀑布流布局的示例代码
2017/11/10 HTML / CSS
预订全球最佳旅行体验:Viator
2018/03/30 全球购物
Vertbaudet西班牙网上商店:婴儿服装、童装、母婴用品和儿童家具
2019/10/16 全球购物
美国领先的机场停车聚合商:Airport Parking Reservations
2020/02/28 全球购物
学校联谊协议书
2014/09/16 职场文书
2014年电厂工作总结
2014/12/04 职场文书
死者家属慰问信
2015/03/24 职场文书
MySQL中使用or、in与union all在查询命令下的效率对比
2021/05/26 MySQL
python元组打包和解包过程详解
2021/08/02 Python