当项目被拖动到时间轴vis.js时,如何获取项目的范围/ innerHtml?

时间:2017-05-07 19:04:16

标签: html angularjs timeline vis.js

1.我在一个div中有一个项目

2.我拖动那些项目并放入时间线。

3.so在删除时。我想获得该特定项目的时间轴范围。

  1. 我使用了ng-draggable,timeline vis.js library。
  2. 一个div代码中的项目:

    <div class="timeline-elements-left-column">
                    <md-card class="timeline-elements-container"
                                 ng-repeat="element in vm.elementAndStages">
                        <md-toolbar md-scroll-shrink class="timeline-selected-elements drag-object">
                            <div layout="row"
                                 id="translation-icon-move"
                                 ng-drag="vm.isDragging"
                                 ng-mousedown="vm.StartDragging(element, event)"
                                 ng-drag-data="element">
                                <div flex class="timeline-selected-elements-text">
                                    <span>{{element.selectedElement.description}}</span>
                                </div>
                                <div class="timeline-selected-elements-icon">
                                    <md-icon ng-show="element.selectedElement.collapsed"
                                             class="zmdi zmdi-chevron-up"
                                             ng-click="vm.Collapse(element.selectedElement)">
                                    </md-icon>
                                    <md-icon ng-hide="element.selectedElement.collapsed"
                                             class="zmdi zmdi-chevron-down"
                                             ng-click="vm.Collapse(element.selectedElement)">
                                    </md-icon>
                                </div>
                                <div class="timeline-selected-elements-icon timeline-selected-elements-icon-drag">
                                    <md-icon class="zmdi zmdi-more-vert"></md-icon>
                                </div>
                            </div>
                        </md-toolbar>
                    </md-card>
                </div>
    

    4.所以这里vm.StartDragging()是拖动事件的函数。

    1. 所以在开始拖动功能时

      函数StartDragging(data:stage,event:any){

      的console.log(this.timeline.getEventProperties(事件));  }

    2. 所以拖延工作正常。

      1. 问题在于成功。
      2. 在时间轴上取消成功,但我无法获得用户在时间轴中删除项目的范围。
      3. 在Html中删除代码

        <div class="vis-group" ng-drop="true" ng-drop-success="vm.OnDropComplete($index, $data, $event,0)" ng-drag-stop="vm.StopDragging($event)" id="group0" style="height: 173px;">
        

      4. 这里滴水很好。

        5.OnDropComplete功能代码

      5. OnDropComplete(index:number,stage:any,event:any,groupId:number):void {

            var indexToRemove: number = -1;
            this.pendingChanges = [];
        

        的console.log(this.timeline.getEventProperties(事件)); }

        1. so console.log(this.timeline.getEventProperties(event));这行生成错误。这里的事件没问题,但是event.target是未定义的。
        2. enter image description here

1 个答案:

答案 0 :(得分:1)

这是您要解决的棘手任务。由于vis时间轴是动态的(可以缩放或滚动),因此您没有静态点,可以将其用作项目放置位置的引用点。 当我尝试解决类似的问题时,我使用document.getElementFromPoint()(使用drop事件中的坐标)和时间轴中的时间轴的组合来获得用户放置项目的最近点。使用这些信息,我会在特定的地方添加项目。

我希望这会让你走上正轨。