日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

better-scroll:angularJs中用better-scroll封装一个滚动的指令

發布時間:2025/4/5 编程问答 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 better-scroll:angularJs中用better-scroll封装一个滚动的指令 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

注:ionic自帶的ion-scrll,在添加了一個長按復制的類樣式后,會導致滾動白屏的問題。因為長按復制的類阻礙了ionic的滑動監聽事件。所以選擇用better-scroll來代替ionic的滾動效果。

?

import BScroll from 'better-scroll';
// @ngInject function ikScroll($timeout, $compile) { function initPullDown(bScroll, $scope, $element) { // 是否開啟回彈 let isRebounding = false; const initTop = -60; const initDown = { top: `${initTop}px`, before: true, isFlip: false, }; const $pullDown = angular.element(` <div class="ik-scroll-pull-down" ng-style="{top:down.top}"> <div class="ik-scroll-pull-down-icon" ng-if="down.before"> <i class="icon ion-android-arrow-down" ng-class="{flip:down.isFlip}"></i> </div>
<div class="ik-scroll-pull-down-loading" ng-if="!down.before"> <ion-spinner icon="ios"></ion-spinner> </div> </div> `);
$element.append($compile($pullDown)($scope)); $scope.down = _.assign({}, initDown);
bScroll.on('pullingDown', () => { $scope.$apply(() => { $scope.down.before = false; });
$scope.onPullDown().then(() => { isRebounding = true; bScroll.finishPullDown();
$timeout(() => { $scope.down = _.assign({}, initDown); isRebounding = false; bScroll.refresh(); }, bScroll.options.bounceTime); }); });
bScroll.on('scroll', (pos) => { $scope.$apply(() => { if ($scope.down.before) { $scope.down.top = `${Math.min(pos.y + initTop, 0)}px`; }
if (pos.y >= 60) { $scope.down.isFlip = true; }
if (isRebounding) { $scope.down.top = `${0 - (60 - pos.y)}px`; } }); }); }
function initPullUp(bScroll, $scope, $content) { const $pullUp = angular.element(` <div class="ik-scroll-pull-up"> <div class="ik-scroll-pull-up-text" ng-style="{display:up.textDisplay}">{{up.text}}</div> <div class="ik-scroll-pull-up-loading" ng-if="up.loading"> <ion-spinner icon="ios"></ion-spinner> </div> </div> `); $content.append($compile($pullUp)($scope));
$scope.up = { loading: false, text: '加載更多', textDisplay: 'block', };
$scope.up.text = $scope.moreData ? '加載更多' : '沒有更多數據了~'; bScroll.on('pullingUp', () => { const result = $scope.onPullUp();
$scope.$apply(() => { $scope.up.loading = true; $scope.up.textDisplay = 'none';
if (!result) { $scope.up.loading = false; $scope.up.text = '沒有更多數據了~'; $scope.up.textDisplay = 'block';
bScroll.finishPullUp(); } else { result.then(() => { $timeout(() => { $scope.up.loading = false; $scope.up.text = '加載更多'; $scope.up.textDisplay = 'block';
bScroll.finishPullUp(); bScroll.refresh(); }); }); } }); }); }
return { restrict: 'E', scope: { onPullDown: '&', onPullUp: '&', moreData: '=' }, compile: ($element) => { $element.addClass('ik-scroll');
const $content = angular.element('<div class="ik-scroll-content"></div>'); $content.append($element.contents()); $element.append($content);
return ($scope, $element, $attrs) => { const opts = { scrollbar: { fade: true }, preventDefaultException: {className:/(^|\s)long-tap--copy(\s|$)/}, };
// 是否開啟下拉刷新 if ($attrs.onPullDown) { opts.pullDownRefresh = { threshold: 60, stop: 60 }; }
// 是否開啟上拉加載 if ($attrs.onPullUp) { opts.pullUpLoad = { threshold: 60 }; }
$timeout(() => { const bScroll = new BScroll($element[0], opts);
if ($attrs.onPullDown) { initPullDown(bScroll, $scope, $element); }
if ($attrs.onPullUp) { initPullUp(bScroll, $scope, $content); } }); }; }, }; }
export default ikScroll;

?

轉載于:https://www.cnblogs.com/JJoan/p/10056272.html

總結

以上是生活随笔為你收集整理的better-scroll:angularJs中用better-scroll封装一个滚动的指令的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。