angular 사용 원생 드래그 페이지 카드 및 폼 컨트롤 입력 지연 문제 해결
이전에 angular 프로젝트 가 있 었 는데 페이지 에 표 가 많 지 않 고 100 여 개(이것 은 고정 되 지 않 고 어떤 곳 은 많 고 어떤 곳 은 적다)였 지만 다시 입력 할 때 입력 이 지연 되 고 반응 이 민감 하지 않 아 사용자 체험 에 매우 좋 지 않 았 다.또 하나의 기능 은 드래그 기능(원생,공식 적 인 드래그 기능 을 사용 하지 않 음)이다.왼쪽 에서 오른쪽 구역 으로 끌 면 드래그 구역 이 적 을 때 유창 하지만 수백 수천 에 달 할 때 반응 이 매우 느리다.
원인
위의 두 문 제 는 사실 모두
angular
의 메커니즘 과 관계 가 있다.하나의 양 방향 연결,하나의 드래그 는 결국angular
의 변화 검 측 때 문 입 니 다.angular 의 양 방향 연결 은 주로 더러 운 데이터 검사 로 대량의 검 사 를 하면 효율 이 비교적 낮다.(양 방향 바 인 딩 시 zone 에 비동기 함 수 를 마 운 트 합 니 다.데이터 변 화 를 처리 하고 변화 피드백 을 페이지 에 표시 합 니 다)입력 이 지연 될 수 있 습 니 다.
드래그(zone 에 비동기 함 수 를 마 운 트 하 는 것 이기 도 합 니 다)는
angular
모든 픽 셀 을 이동 할 수 있 는 요 소 를 검 측 할 수 있 고 dom 에 대한 조작 과 관련 될 수 있 습 니 다.드래그 구역 의 수량 이 많 을 때 바 인 딩 함수 가 많아 집 니 다.angular
검 측 해 야 할 요소 구역 이 점점 많아 집 니 다.처리 하면 할 수록 힘 에 부친 다(원소 가 숨겨 져 있어 도 변화 검 사 를 하지 않 는 다 는 뜻 은 아니다)해결 하 다.
this.ngZone.runOutsideAngular(() => {
this.dragEnter = this.rd.listen(spanDom, 'dragenter', this.dragenterHandler.bind(this));
this.dragOver = this.rd.listen(spanDom, 'dragover', (e) => {
e.preventDefault();
});
this.dragLeave = this.rd.listen(spanDom, 'dragleave', this.dragLeaveHandle.bind(this));
});
this.dragDrop = this.rd.listen(spanDom, 'drop', this.dropHandler.bind(this));
잦 은 조작(예 를 들 어 dragover)에 대해 변경 검 사 를 실행 하지 않 습 니 다.NgZone
중의runOutsideAngular
방법 을 사용 하면angular
안의 변 화 를 추적 하지 않 습 니 다.ps:각도 요소 드래그 아래 보기
npm install ng2-drag-drop --save
2.템 플 릿 에서 끌 수 있 는 요 소 를 설정 합 니 다.
// drag.component.html
<div>
<a href="javascript:;" rel="external nofollow" *ngFor="let item of sysData" draggable [dragData]="item" [dragScope]="'system'">{{ item.name }}</a>
</div>
// drag.component.ts
<div droppable (onDrop)="onItemDrop($event)" [dropScope]="'system'"></div>
// drag.component.ts
export class DragComponent {
const sysData = [
{id: '1', name: ' 1'},
{id: '2', name: ' 2'},
{id: '3', name: ' 3'},
{id: '4', name: ' 4'}
];
}
onItemDrop(e: any) {
// data - item
const data = e.dragData;
}
총결산이 글 은 angular 에서 네 이 티 브 드래그 페이지 를 사용 하 는 것 에 관 한 것 입 니 다.폼 컨트롤 의 입력 지연 에 관 한 글 은 여기까지 소개 되 었 습 니 다.더 많은 관련 angular 에 서 는 네 이 티 브 드래그 페이지 를 사용 하여 걸 립 니 다.폼 컨트롤 의 입력 지연 내용 은 예전 의 글 을 검색 하거나 아래 의 관련 글 을 계속 찾 아 보 세 요.앞으로 많은 응원 바 랍 니 다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Angular에서 타사 스크립트 및 CSS 작업Angular 방식으로 회로도가 있는 외부 라이브러리를 추가하거나 모듈을 가져옵니다. Angular.json은 Angular 프로젝트의 모든 설정 파일이며 표준 JavaScript 및 CSS 파일과 함께 타사 라이브...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.