Dragula 服务在目标中添加最后一滴

问题描述

我试图解决一个基于 angular 5.5 和 dragula 1.5.0 的应用程序的问题 . 如果只执行一次拖放操作,代码就可以正常工作。虽然在用户界面上它显示了正确的东西。但我不知道如何操纵它。 这是代码

        this.dragulaService.drag.asObservable().pipe(takeuntil(this.destroy$)).subscribe((value) => {
        const dragValue = value[1].innerText;
        const dragValues = dragValue.trim().trim('\n').split('\t');
        this.dragValue = dragValues[1];
    });

this.dragulaService.drop.asObservable().pipe(takeuntil(this.destroy$)).subscribe((value) => {
        const values = value[2].innerText;
        const dropValues = values.trim().trim('\n').split('\t');
        if (this.dragValue === dropValues[1]) {
            this.dropBeforeValue = dropValues[12];
        } else {
            this.dropBeforeValue = dropValues[1];
        } }

现在,当我在第一次放下后访问元素时,它的工作正常,因为元素按照第一次放下就位。但在第二次删除时,它还包含前一个或第一个删除值,这使得 dropValues 数组大小更大。 有没有办法让每次拖放都只包含当前值?

提前致谢

解决方法

您可以使用 dropModel 获取所有信息:

this.dragulaService.dropModel(this.bag)
            .subscribe(
                (value: {
                    name: string; el: Element; target: Element;
                    source: Element; sibling: Element; item: any; sourceModel: any[]; targetModel: any[]; sourceIndex: number; targetIndex: number;
                }) => {
                    ...handle it
                }));

别忘了设置dragula模型

<div [dragula]="bag"
     [(dragulaModel)]="someArray"