Skip to content

Error when dropping an item with nested list into a another item with nested list #44

Description

@filipkis

Consider the following case:

  • item 1
    • subitem 1
  • item 2
  • item 3
    • subitem 2

If both the main list and sublists are connected then root items can be normally sorted each other and item 2 can be dragged to subitem of item 1 or item 3.

However, if you drag item 3 as subitem of item 1, i.e. aiming to get the following:

  • item 1
    • subitem 1
    • item 3
      • subitem 2
  • item 2

then there will be the following error (and the subitem 2 will not be shown):

Sortable.js:1823 Uncaught TypeError: Cannot read property 'Sortable1551478014931' of null
    at _dispatchEvent (VM1983 Sortable.js:1823)
    at Sortable._onDrop (VM1983 Sortable.js:1446)
    at Sortable.handleEvent (VM1983 Sortable.js:1527)

A bit of debugging showed that ng-sortable triggers destroy which deletes, I believe, the sortable of the dragging item i.e. item 3.

Here is a minimal codepen demo.

This might be related to #43

Activity

  1. filipkis commented on Mar 3, 2019

    @filipkis
    Author

    A bit of debugging showed that the reason is that during onAdd method the ng-sortable will the dragged item from the list and call the $scope.apply() which will trigger the $destroy on the ng-sortable.

    Removing that $scope.apply() is however not enough because there's another one that's called also to early.

    However, removing both of those actually removes the above reported error and on the first glance all seems to work fine.

    So now the question remains why was there a need to trigger the digest twice in onAdd (once through _sync and once directly) and in once onUpdate (through _sync).

    Isn't it enough to just call scope.$apply() in onEnd?

  2. added 2 commits that reference this issue on Mar 16, 2019
    89d272f
    f63b6c0
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions