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 相关文章推荐
QQ登录简单实现代码
Mar 09 Javascript
理解JAVASCRIPT中hasOwnProperty()的作用
Jun 05 Javascript
JS验证身份证有效性示例
Oct 11 Javascript
js实现在字符串中提取数字
Nov 05 Javascript
原生javascript实现Tab选项卡切换功能
Jan 12 Javascript
javascript实现鼠标放上后下边对应内容变换的效果
Aug 06 Javascript
vuejs动态组件给子组件传递数据的方法详解
Sep 09 Javascript
JSON 数据格式详解
Sep 13 Javascript
AngularJs ng-change事件/指令的用法小结
Nov 01 Javascript
Parcel.js + Vue 2.x 极速零配置打包体验教程
Dec 24 Javascript
浅谈React 服务器端渲染的使用
May 08 Javascript
webpack4实现不同的导出类型
Apr 09 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一些公用函数的集合
2008/03/27 PHP
PHP基于redis计数器类定义与用法示例
2018/02/08 PHP
js 提交和设置表单的值
2008/12/19 Javascript
js中如何复制一个对象并获取其所有属性和属性对应的值
2013/10/24 Javascript
js style动态设置table高度
2014/10/21 Javascript
javascript设置连续两次点击按钮时间间隔的方法
2014/10/28 Javascript
js实现黑色简易的滑动门网页tab选项卡效果
2015/08/31 Javascript
学习JavaScript设计模式(代理模式)
2015/12/03 Javascript
Jquery判断form表单数据是否变化
2016/03/30 Javascript
Bootstrap3 多个模态对话框无法显示的解决方案
2017/02/23 Javascript
layui框架中layer父子页面交互的方法分析
2017/11/15 Javascript
解决Linux无法正常安装与卸载Node.js的方法
2018/01/19 Javascript
JQuery选中select组件被选中的值方法
2018/03/08 jQuery
解决vue addRoutes不生效问题
2020/08/04 Javascript
vue3.0 加载json的方法(非ajax)
2020/10/26 Javascript
[03:48]2014DOTA2 TI专访71DK夺冠不靠小组赛高排名
2014/07/11 DOTA
[01:01:25]DOTA2上海特级锦标赛B组资格赛#2 Fnatic VS Spirit第三局
2016/02/27 DOTA
[00:35]DOTA2上海特级锦标赛 EG战队宣传片
2016/03/04 DOTA
Python学习笔记(一)(基础入门之环境搭建)
2014/06/05 Python
matplotlib中legend位置调整解析
2017/12/19 Python
python+pyqt5实现KFC点餐收银系统
2019/01/24 Python
python 获取毫秒数,计算调用时长的方法
2019/02/20 Python
python 一维二维插值实例
2020/04/22 Python
Talbots官网:美国成熟女装品牌
2019/11/15 全球购物
Linux不知道文件后缀名怎么判断文件类型
2014/08/21 面试题
外科实习自我鉴定
2013/10/06 职场文书
个人简历自我评价
2014/01/06 职场文书
农村党支部先进事迹
2014/01/14 职场文书
经典促销广告词大全
2014/03/19 职场文书
期末学生评语大全
2014/04/24 职场文书
股指期货心得体会
2014/09/10 职场文书
大学生实习证明范本
2014/09/19 职场文书
2016教师政治学习心得体会
2016/01/23 职场文书
html5移动端禁止长按图片保存的实现
2021/04/20 HTML / CSS
为什么RedisCluster设计成16384个槽
2021/09/25 Redis
Apache Hudi 加速传统的批处理模式
2022/04/24 Servers