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排序
- JS實現前臺表格排序功能JS排序
- Cypress實現拖拽
- Grid 拖拽佈局實現
- Python截圖OCR+滑鼠拖拽實現小猿口算比大小自動答題Python
- 基於Vue實現拖拽升級(九宮格拖拽)Vue
- HTML5拖拽API實現vue樹形拖拽元件HTMLAPIVue元件
- 實現小程式canvas拖拽功能Canvas
- 線性代數在前端中的應用(二):實現滑鼠拖拽旋轉元素、Canvas圖形前端Canvas
- JS滑鼠事件完成元素拖拽(簡單-高階)JS事件
- vxe-table 實現列拖拽排序排序
- 使用BottomSheetBehavior實現美團拖拽效果
- Easyui datagrid 實現表格記錄拖拽UI
- Jquery實現拖拽式繪圖工具jQuery繪圖
- 實現QQ的TabBar拖拽動效tabBar
- [MAUI]實現動態拖拽排序網格UI排序
- win10滑鼠左鍵拖拽不了圖示怎麼辦 win10電腦滑鼠左鍵拖拽不瞭解決方法Win10
- 線性代數在前端中的應用(一):實現滑鼠滾輪縮放元素、Canvas圖片和拖拽前端Canvas
- react中使用dnd-kit實現拖拽排序React排序
- ItemTouchHelper實現可拖拽和側滑的列表
- Yii2實現跨mysql資料庫關聯查詢排序功能MySql資料庫排序
- Matlab 實現介面相應滑鼠事件Matlab事件
- 前端實現檔案下載和拖拽上傳前端
- QStyledItemDelegate 和QTreeView實現滑鼠hover訊息QTView
- 12.3 實現模擬滑鼠錄製回放
- JavaScript、CSS實現滑鼠跟隨繁花效果JavaScriptCSS
- 滑鼠懸浮div實現旋轉效果
- .滑鼠點選愛心特效的實現特效
- 滑鼠有嚴重的拖拽感很重延遲怎麼解決
- vxe-modal 實現視窗拖拽調整寬高
- [C#] [WPF] 在MVVM中實現拖拽功能 - 入門C#MVVM
- 短視訊軟體開發,RecyclerView實現拖拽效果View
- js拖拽原理及簡單實現(渣渣自學)JS
- React 實現炫酷的可拖拽網格佈局React
- 實現element-ui對話方塊可拖拽功能UI
- 動畫-CAShapeLayer實現QQ訊息紅點拖拽效果動畫