成果を達成する最初は、antdesign をベースにしたものがあるかどうかをオンラインで調べようと思ったのですが、本当にほとんどないことがわかりました。では、早速写真をご覧ください。 sortablejs の紹介まず、このプラグインについて知っておきましょう: sortablejs ここでは私が使用した API に焦点を当てます。
put : put は、リスト コンテナーにリスト セルを配置するための設定を定義するために使用されます (true/false/['foo','bar']/function)。
2. 具体的な実装1. 最初のステップは、 <s-テーブル ref="テーブル" サイズ="デフォルト" クラス="左テーブル" rowKey="キー" :columns="列" :data="データをロード"> </s-テーブル> <s-テーブル クラス="ソートテーブル" ref="テーブル2" サイズ="デフォルト" クラス="左テーブル" rowKey="キー" :columns="列" :data="データをロード"> </s-テーブル> 特定の列とloadData については詳しく説明する必要はありません。 JSコード 'sortablejs' から Sortable をインポートします。 方法:{ // ドラッグを実装するためにソート可能を初期化する initSortable () { var that = これ var el = this.$el.querySelector('.sort-table tbody') ソート可能.create(el, { ハンドル: '.ant-table-row', アニメーション: 150, グループ: { 名前: 'name'、プル: true、プット: true }、 onUpdate: 関数 (evt) { }, // ドラッグ開始時 onStart: function (evt) { }, onAdd: 関数 (イベント) { }, onRemove: 関数 (evt) { } }) }, ソート可能な初期化1(){ var that = これ var el = this.$el.querySelector('.left-table tbody') ソート可能.create(el, { ハンドル: '.ant-table-row', アニメーション: 150, グループ: { 名前: 'name'、プル: true、プット: true }、 onUpdate: 関数 (evt) { }, // ドラッグ開始時 onStart: function (evt) { }, onAdd: 関数 (イベント) { }, onRemove: 関数 (evt) { } }) }, } 今のところ2テーブル間でドラッグ効果を実現できますが、それはドラッグ効果のみです。 右側のテーブルではソートが固有ですが、このテーブルではこのソートは必要ありません。ドラッグが成功したのに、なぜまだデータがないと表示されるのでしょうか。最後に、左側のヘッダーの
パフォーマンスの消費を考慮して、2 番目を選択しました。 データ(){ 戻る { unMatchedList: [], // 左側の一致しないデータ dataList: [], // 右側の一致するデータ pullIndex: '', // 元の配列ドラッグ要素のインデックス} } 2) // ドラッグ開始時 onStart: function (evt) { that.pullIndex = evt.oldIndex }, onAdd: 関数 (イベント) { //evt.newIndex は新しい配列のインデックスに移動します //pullIndex は元の配列内のドラッグされた要素のインデックスです that.dataList.splice(evt.newIndex, 0, that.unMatchedList[that.pullIndex]) that.dataList.forEach((item, index) => { アイテム.ソート = インデックス + 1 }) //テーブルビューに更新を通知します。$nextTick(() => { that.$refs.table2 && this.$refs.table2.refresh(true) that.$refs.table && this.$refs.table.refresh(true) }) }, onRemove: 関数 (evt) { that.dataList.splice(evt.oldIndex, 1) that.dataList.forEach((item, index) => { アイテム.ソート = インデックス + 1 }) $nextTick(() => { that.$refs.table2 && this.$refs.table2.refresh(true) that.$refs.table && this.$refs.table.refresh(true) }) } }) 3) 同じテーブル内でドラッグアンドドロップによる並べ替えを実装する ソート可能な初期化(){ var that = これ var el = this.$el.querySelector('.sort-table tbody') ソート可能.create(el, { ハンドル: '.ant-table-row', アニメーション: 150, グループ: { 名前: 'name'、プル: true、プット: true }、 //ここではonEndメソッドを使用しないでください onUpdate: function (evt) { var o = evt.oldIndex var n = evt.newIndex (o === n)の場合{ 戻る } that.sortListAndUpdate(that.dataList, o, n) }, }) }, // o (oldIndex) と n (newIndex) が 0 から始まるようにデータをソートします sortList (list, o, n) { var newTableData = JSON.parse(JSON.stringify(リスト)) var データ = newTableData.splice(o, 1, null) newTableData.splice(o < n ? n + 1 : n, 0, data[0]) newTableData.splice(o > n ? o + 1 : o, 1) 新しいテーブルデータを返す }, /** * データをソートしてテーブルを更新します。o (oldIndex) と n (newIndex) は 0 から始まる必要があります*/ ソートリストと更新 (リスト, o, n) { var newTableData = this.sortList(リスト、o、n) newTableData.forEach((アイテム、インデックス) => { アイテム.ソート = インデックス + 1 }) this.$nextTick(() => { this.dataList = 新しいテーブルデータ that.$refs.table2 && this.$refs.table2.refresh(true) }) }, ここでは、ドラッグ効果がある限り これで、antdesign-vue と sortablejs を組み合わせて、2 つのテーブルをドラッグして並べ替える機能を実現する方法についての説明は終わりです。antdesign-vue でドラッグ アンド ソートを実現する方法についての関連コンテンツをさらにご覧になりたい場合は、123WORDPRESS.COM の以前の記事を検索するか、以下の関連記事を引き続きご覧ください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。 以下もご興味があるかもしれません:
|
VueはPCカメラを呼び出してリアルタイムで写真を撮影します。参考までに、具体的な内容は次のとおりで...
1. 引き続き PHP スクリプトを使用して実行します。コマンドラインに入力: php /home/...
ビューポートとはモバイル ブラウザは、Web ページを仮想の「ウィンドウ」(ビューポート) に配置し...
Zabbix バージョン 3.0 以降、Zabbix サーバー、Zabbix プロキシ、Zabbi...
いわゆる 3 列適応レイアウトとは、両側の幅が固定され、中央のブロックの幅が適応されることを意味しま...
ご存知のとおり、cd コマンドがないと、Linux でディレクトリを切り替えることはできません。それ...
今日、Dockerfile を使用してイメージを作成したときに問題が発生し、イメージの実行後にコンテ...
マスターのメソッドによると、原因は sysctl net.ipv4.ip_forward であること...
まず、setIntervalはフックとしてカプセル化されます👇 'react' から...
今日は仮想マシンを使って実験をしました。システムをインストールし、いくつかのオプションを最適化した後...
1. はじめに行ロックとテーブルロックの違いは面接で頻繁に出てくるはずです。MySQL のロックにつ...
MySQL 5.7 バージョン:方法1: SET PASSWORDコマンドを使用するフォーマット: ...
1. シナリオの説明: 同僚から MySQL で explain を使用する方法を教わったので、返さ...
Linux システムでは、chmod コマンドと chown コマンドの両方を使用して権限を設定でき...
1. 質問:最近、挿入操作を行っています。MySQLのバージョンは5.7です。挿入は成功しますが、エ...