visible-change
Element UI では、選択ドロップダウン ボックスのイベントをリッスンして、最下部に到達したときに次のページを読み込む効果を実現できます。
方法 1: elementUi イベントを使用する
具体的な手順は次のとおりです。
- まず、選択コンポーネントに次のように設定します。
@visible-change="handleVisibleChange" ref="mySelect"
- 現在ロードされているページ番号を記録するには、データ内で変数 pageNum を定義します。
pageNum: 1,
handleVisibleChange
ドロップダウン ボックスの表示と非表示の変更を監視する関数をメソッドで定義します。
handleVisibleChange(visible) {
if (visible) {
// 如果下拉框显示
const selectDropdown = document.querySelector('.el-select-dropdown__wrap');
// 监听下拉框滚动事件
selectDropdown.addEventListener('scroll', this.loadNextPage);
} else {
// 如果下拉框隐藏
const selectDropdown = document.querySelector('.el-select-dropdown__wrap');
// 移除下拉框滚动事件监听
selectDropdown.removeEventListener('scroll', this.loadNextPage);
}
},
loadNextPage
次のページのデータをロードするメソッドで関数を定義します。
loadNextPage() {
const selectDropdown = document.querySelector('.el-select-dropdown__wrap');
// 判断下拉框是否触底
if (selectDropdown.scrollTop + selectDropdown.offsetHeight >= selectDropdown.scrollHeight) {
// 触底加载下一页数据
this.pageNum++;
// 调用接口请求下一页数据
// ...
}
},
方法 2: カスタム コマンドを使用する
まず、この問題では、選択ドロップダウン ボックスのスクロール イベントをリッスンするカスタム命令を記述する必要があります。これが最初のステップです。
ステップ 1: 新しい select.js ファイルを作成します。具体的なコードは次のとおりです。
ステップ 2: main.js ファイルにインポートするだけです。もちろん、インポート方法は 2 つあります。以下に紹介します。
1. 最初のインポート方法 (この方法は、プロジェクト内に他のカスタム コマンドがあり、それらをすべて取り込むことはできません) このインポート方法は、直接公開される前述の直接エクスポートのデフォルトです。
import directives from '@/assets/js/directives'
Object.keys(directives).forEach(item => {
Vue.directive(item, directives[item])
})
2. 2つ目の導入方法。vueファイルを直接記述してvueをインポートし、Vue.directive()でコードを記述する方法ですが、この方法の紹介は以下の通りです。
import Directives from './directives/index'
Vue.use(Directives)
上記の手順により、ドロップダウン ボックスが一番下に達したときにデータの次のページを自動的にロードする効果を実現できます。ニーズに応じて、対応するインターフェイスを呼び出してデータの次のページを要求し、それをドロップダウン ボックスに表示できます。