在angular4.X里使用mCustomScrollbar滚动条插件
2024-08-31 14:52:39
对其配置,有的时候会出现问题,可以尝试更换一下mCustomScrollbar的版本。
可以不用install在项目里,直接将所需的js和css下载下来后放在项目的静态文件夹目录下。然后在angular.json里对其引用。
如下图为必须文件:
一些扩展功能需要mousewheel.js。
然后在angular.json里引用:
插件是基于jquery的,所以需要先引用jquery。
这样基本的就处理好了,去将其自定义为指令就可以在项目里随处使用啦。
以下为定义指令文件代码:
import {Directive, ElementRef, OnInit, Output, EventEmitter} from '@angular/core';
// import * as $ from 'jquery';
declare var $: any;
@Directive({
selector: 'perfect-scrollbar',
host: {'class': 'mCustomScrollbar'}
})
export class ScrollbarComponent implements OnInit {
@Output() psYReachEnd = new EventEmitter();
el: ElementRef;
constructor(el: ElementRef) {
this.el = el;
}
ngOnInit() {
const psYReachEnd = this.psYReachEnd;
// console.log(this.el);
// console.log($('.mCustomScrollbar'));
let scrollAxis = 'y';
if (this.el.nativeElement.getAttribute('data-scroll') === 'X') {
scrollAxis = 'x';
}
$(this.el.nativeElement).mCustomScrollbar({
autoHideScrollbar: true,
setHeight: '100%',
theme: 'light',
axis: scrollAxis,
callbacks: {
whileScrolling: function(){ // 只要滚动条滚动,这个函数就会执行
if (this.mcs.topPct >= 99) { // 这表示当滚动条滚动到这个div的90%(当然这个值是可变的)的时候调用下面的代码,
psYReachEnd.emit();
}
}
/*onTotalScroll: () => {
this.psYReachEnd.emit();
}*/
}
});
}
}
其中使用@Output和EventEmitter自定义事件,然后在滚动条插件的配置里,配置好当滚动到底部时通过emit()去触发这个自定义的事件。插件的callbacks的所有方法可以查看插件官网的说明。http://manos.malihu.gr/jquery-custom-content-scroller/#callbacks-section
https://www.cnblogs.com/LY-leo/p/5750059.html
自定义事件说明:Angular 4.x Events Bubbling:https://segmentfault.com/a/1190000009149495
以下为html使用指令时的代码:
<perfect-scrollbar style="max-height: 366px" (psYReachEnd)="psYReachEnd('getCertification')" *ngIf="Certifications.length>0">
内容
</perfect-scrollbar>
这里的psYReachEnd是在指令里自己定义的一个事件,为啦实现在滚动条滚到底部请求新数据更新数据。
在组件里定义的滚动到底部触发自定义事件后调用的方法:
最新文章
- Tomcat下conf下server.xml的文件配置信息
- keepalived 原主上线时vip漂移情况
- iframe无刷新跨域并获得返回值
- taiyi_interview(Introduction To Database Refactoring)
- UWP ComboBox下拉选项滚动循环问题
- php安装json模块
- PHP中的赋值运算符
- 对git认识
- HTML第二天学习笔记
- String, StringBuilder, StringBuffer问题
- linux XAMPP安装与使用
- UVW源码漫谈(四)
- pat 1014 1017 排队类问题
- 我的第一个Angular2应用
- HDU1263水果
- TCP可靠数据传输
- 剑指Offer(9)
- I/O模型之四:Java 浅析I/O模型(BIO、NIO、AIO、Reactor、Proactor)
- BizTalk RosettaNet 配置导入与导出
- datepicker动态初始化
热门文章
- js捕获页面回车事件
- css文字换行问题white-space:pre-line或者white-space:pre-wrap,解决word-wrap:break-word解决不了的
- Windows窗体应用布局详解
- Android ViewPager系列之ViewPager一屏显示多个子页面
- Codeforces 982 C. Cut &#39;em all!(dfs)
- Js jquery常用的身份证号码 邮箱电话等验证
- 使用TensorFlow编写常用模块的Python代码示例
- ztree连接数据库,实现下拉菜单
- How Javascript works (Javascript工作原理) (五) 深入理解 WebSockets 和带有 SSE 机制的HTTP/2 以及正确的使用姿势
- IFC2x3标准阅读