Angular6實(shí)現(xiàn)拖拽功能指令drag實(shí)例詳解
1. 指令代碼
import { Directive, ElementRef, OnInit, HostListener } from '@angular/core'; @Directive({ selector: '[appDrag]' }) export class DragDirective implements OnInit { constructor(public el: ElementRef) { } public isDown = false; public disX; // 記錄鼠標(biāo)點(diǎn)擊事件的位置 X public disY; // 記錄鼠標(biāo)點(diǎn)擊事件的位置 Y private totalOffsetX = 0; // 記錄總偏移量 X軸 private totalOffsetY = 0; // 記錄總偏移量 Y軸 // 點(diǎn)擊事件 @HostListener('mousedown', ['$event']) onMousedown(event) { this.isDown = true; this.disX = event.clientX; this.disY = event.clientY; } // 監(jiān)聽document移動(dòng)事件事件 @HostListener('document:mousemove', ['$event']) onMousemove(event) { // 判斷該元素是否被點(diǎn)擊了。 if (this.isDown) { this.el.nativeElement.style.left = this.totalOffsetX + event.clientX - this.disX + 'px'; this.el.nativeElement.style.top = this.totalOffsetY + event.clientY - this.disY + 'px'; } } // 監(jiān)聽document離開事件 @HostListener('document:mouseup', ['$event']) onMouseup(event) { // 只用當(dāng)元素移動(dòng)過了,離開函數(shù)體才會(huì)觸發(fā)。 if (this.isDown) { console.log('fail'); this.totalOffsetX += event.clientX - this.disX; this.totalOffsetY += event.clientY - this.disY; this.isDown = false; } } ngOnInit() { this.el.nativeElement.style.position = 'relative'; } }
2.使用
首先將指令在Module中注冊,在declarations
數(shù)組中添加指令。
然后在要拖拽的組件上,添加指令 appDrag
,即可實(shí)現(xiàn)拖拽功能。
以上就是Angular6實(shí)現(xiàn)拖拽功能指令drag實(shí)例詳解的詳細(xì)內(nèi)容,更多關(guān)于Angular6拖拽功能指令drag的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Angular.js?實(shí)現(xiàn)帶手柄自由調(diào)整頁面大小的功能
這篇文章主要介紹了Angular.js?實(shí)現(xiàn)帶手柄自由調(diào)整頁面大小的功能,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-12-12AngularJs bootstrap搭載前臺(tái)框架——準(zhǔn)備工作
本文主要介紹AngularJs bootstrap搭載前臺(tái)框架,這里對(duì)Bootstrap 搭載環(huán)境,及注意事項(xiàng)做了講解,有需要的小伙伴可以參考下2016-09-09對(duì)比分析AngularJS中的$http.post與jQuery.post的區(qū)別
這篇文章主要給大家對(duì)比分析AngularJS中的$http.post與jQuery.post的區(qū)別,十分的詳細(xì),是篇非常不錯(cuò)的文章,這里推薦給小伙伴們。2015-02-02AngularJS實(shí)現(xiàn)使用路由切換視圖的方法
這篇文章主要介紹了AngularJS實(shí)現(xiàn)使用路由切換視圖的方法,結(jié)合學(xué)生信息管理系統(tǒng)為例分析了使用controllers.js控制器來切換視圖的具體步驟與相關(guān)操作技巧,需要的朋友可以參考下2017-01-01AngularJS實(shí)現(xiàn)的輸入框字?jǐn)?shù)限制提醒功能示例
這篇文章主要介紹了AngularJS實(shí)現(xiàn)的輸入框字?jǐn)?shù)限制提醒功能,涉及AngularJS事件監(jiān)聽與元素屬性動(dòng)態(tài)操作相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下2017-10-10總結(jié)AngularJS開發(fā)者最常犯的十個(gè)錯(cuò)誤
AngularJS是如今最受歡迎的JS框架之一,簡化開發(fā)過程是它的目標(biāo)之一,這使得它非常適合于元型較小的apps的開發(fā),但也擴(kuò)展到具有全部特征的客戶端應(yīng)用的開發(fā)。下面給大家總結(jié)了AngularJS開發(fā)者最常犯的十個(gè)錯(cuò)誤,有需要的可以參考學(xué)習(xí)下。2016-08-08angularjs實(shí)現(xiàn)與服務(wù)器交互分享
AngularJS是Google開發(fā)的純客戶端JavaScript技術(shù)的WEB框架,用于擴(kuò)展、增強(qiáng)HTML功能,它專為構(gòu)建強(qiáng)大的WEB應(yīng)用而設(shè)計(jì)。2014-06-06