angualr實現滑鼠拖拽排序功能
angualr2以上版本
我使用的是angualr6.x最新版
ng2-dragula
https://github.com/valor-software/ng2-dragula
1.安裝依賴
npm install ng2-dragula
# or
yarn add ng2-dragula
2.新增這一行到你的 polyfills.ts:
(window as any).global = window;
3.引入模組 DragulaModule.forRoot() 如下:
import { DragulaModule } from `ng2-dragula`;
@NgModule({
imports: [
...,
DragulaModule.forRoot()
],
})
export class AppModule { }
4.引入公用css node_modules/dragula/dist/dragula.css
或者直接複製所有css放styles.scss檔案
5.使用指令,給一個自定義名稱,隨意的字串就行,標識一個div的內容可以拖拽,dragula="div1"和 [dragula]="Vampires"意義等同 程式碼如下
<ul dragula="div1">
<li>Dracula</li>
<li>Kurz</li>
<li>Vladislav</li>
<li>Deacon</li>
</ul>
6.多個div需要拖拽如下
<div dragula="div1">
</div>
<div dragula="div2">
</div>
<div dragula="div3">
</div>
7. 如果需要雙向繫結拖拽的資料 [(dragulaModel)]
[(dragulaModel)]等同於 [dragulaModel]="vampires" (dragulaModelChange)="vampires = $event" 類似ng自帶的[(ngModel)]
<ul dragula="VAMPIRES" [(dragulaModel)]="vampires">
<li *ngFor="let vamp of vampires">
{{ vamp.name }} likes {{ vamp.favouriteColor }}
</li>
</ul>
等同於
<ul dragula="VAMPIRES" [dragulaModel]="vampires" (dragulaModelChange)="vampires = $event">
...
</ul>
8.拖拽過程中的事件訂閱
import { Subscription } from `rxjs`;
import { DragulaService } from `ng2-dragula`;
export class MyComponent {
// RxJS Subscription is an excellent API for managing many unsubscribe calls.
// See note below about unsubscribing.
subs = new Subscription();
constructor(private dragulaService: DragulaService) {
// These will get events limited to the VAMPIRES group.
this.subs.add(this.dragulaService.drag("VAMPIRES")
.subscribe(({ name, el, source }) => {
// ...
})
);
this.subs.add(this.dragulaService.drop("VAMPIRES")
.subscribe(({ name, el, target, source, sibling }) => {
// ...
})
);
// some events have lots of properties, just pick the ones you need
this.subs.add(this.dragulaService.dropModel("VAMPIRES")
// WHOA
// .subscribe(({ name, el, target, source, sibling, sourceModel, targetModel, item }) => {
.subscribe(({ sourceModel, targetModel, item }) => {
// ...
})
);
// You can also get all events, not limited to a particular group
this.subs.add(this.dragulaService.drop()
.subscribe(({ name, el, target, source, sibling }) => {
// ...
})
);
}
ngOnDestroy() {
// destroy all the subscriptions at once
this.subs.unsubscribe();
}
}
還有一個非常棒的外掛可以看看
https://github.com/xieziyu/angular2-draggable
相關文章
- [WPF]原生TabControl控制元件實現拖拽排序功能控制元件排序
- 滑鼠拖拽事件事件
- 原生js實現商品排序功能JS排序
- Cypress實現拖拽
- JS實現前臺表格排序功能JS排序
- 原生js實現拖拽功能JS
- 原生實現元素的拖拽
- 基於Vue實現拖拽升級(九宮格拖拽)Vue
- HTML5拖拽API實現vue樹形拖拽元件HTMLAPIVue元件
- 巧用SQL Server(Ranking)實現view的排序功能SQLServerView排序
- 實現小程式canvas拖拽功能Canvas
- Grid 拖拽佈局實現
- Ext實現資料拖拽功能
- Python截圖OCR+滑鼠拖拽實現小猿口算比大小自動答題Python
- 「實戰」純React實現的拖拽元件React元件
- 線性代數在前端中的應用(二):實現滑鼠拖拽旋轉元素、Canvas圖形前端Canvas
- Jquery實現拖拽式繪圖工具jQuery繪圖
- 實現QQ的TabBar拖拽動效tabBar
- 使用BottomSheetBehavior實現美團拖拽效果
- JS滑鼠事件完成元素拖拽(簡單-高階)JS事件
- Easyui datagrid 實現表格記錄拖拽UI
- [MAUI]實現動態拖拽排序網格UI排序
- UI 進階之拖拽排序的實現UI排序
- Canvas drag 實現拖拽拼圖小遊戲Canvas遊戲
- div實現拖拽效果,同時包含iframe
- javascript基礎(滑鼠事件拖拽,setCapture()方法)(三十六)JavaScript事件APT
- win10滑鼠左鍵拖拽不了圖示怎麼辦 win10電腦滑鼠左鍵拖拽不瞭解決方法Win10
- 線性代數在前端中的應用(一):實現滑鼠滾輪縮放元素、Canvas圖片和拖拽前端Canvas
- ItemTouchHelper實現可拖拽和側滑的列表
- RecyclerView 實現滑動刪除和拖拽功能View
- RecyclerView實現滑動刪除和拖拽功能View
- File雜談——拖拽非同步上傳實現非同步
- react中使用dnd-kit實現拖拽排序React排序
- MYSQL-實現ORACLE- row_number() over(partition by ) 分組排序功能.MySqlOracle排序
- Yii2實現跨mysql資料庫關聯查詢排序功能MySql資料庫排序
- 前端實現檔案下載和拖拽上傳前端
- js拖拽原理及簡單實現(渣渣自學)JS
- 實現collectionViewCell的移動(長按或者直接拖拽)View