diff --git a/Sortable.html b/Sortable.html index a8c1967..77994ce 100644 --- a/Sortable.html +++ b/Sortable.html @@ -61,9 +61,9 @@ var options = {} Object.keys(this.properties).forEach(function(key) { options[key] = this[key] - }) + }); - this.sortable = Sortable.create(this, Object.assign(options, { + var eventCallbacks = { onUpdate: function (e) { if (template) { template.splice("items", e.newIndex, 0, template.splice("items", e.oldIndex, 1)[0]) @@ -115,7 +115,13 @@ onClone: function(e) { this.fire("clone", e) } - })) + }; + + Object.keys(eventCallbacks).forEach(function(name){ + options[name] = eventCallbacks[name]; + }); + + this.sortable = Sortable.create(this, options); }, detached: function() { diff --git a/Sortable.js b/Sortable.js index 6567142..bdcc2e3 100644 --- a/Sortable.js +++ b/Sortable.js @@ -254,7 +254,7 @@ // Bind all private methods for (var fn in this) { - if (fn.charAt(0) === '_') { + if (fn.charAt(0) === '_' && typeof this[fn] === 'function') { this[fn] = this[fn].bind(this); } } @@ -823,15 +823,16 @@ newIndex = _index(dragEl, options.draggable); if (newIndex >= 0) { - // drag from one list and drop into another - _dispatchEvent(null, parentEl, 'sort', dragEl, rootEl, oldIndex, newIndex); - _dispatchEvent(this, rootEl, 'sort', dragEl, rootEl, oldIndex, newIndex); // Add event _dispatchEvent(null, parentEl, 'add', dragEl, rootEl, oldIndex, newIndex); // Remove event _dispatchEvent(this, rootEl, 'remove', dragEl, rootEl, oldIndex, newIndex); + + // drag from one list and drop into another + _dispatchEvent(null, parentEl, 'sort', dragEl, rootEl, oldIndex, newIndex); + _dispatchEvent(this, rootEl, 'sort', dragEl, rootEl, oldIndex, newIndex); } } else {