我正在尝试结合ui-sortable和angular-gridster的功能,以便我可以从列表中拉出一个项目并将其放入可重新排列的网格中。ui-sortable 和 angular-gridster 具有相同的 DOM 结构:
<div>
<ul>
<li ng-repeat="item in items"></li>
</ul>
</div>
和属性允许它们附加到适当的 DOM 元素。我认为这将是一项非常简单的任务,但是我无法让他们一起工作。
我创建了这个CodePen,您可以在其中从 ui-sortable 的“Ingredents”列表拖到“My Coffee”列表中。拖入“我的咖啡”也会更新 angular-gridster“咖啡网格”,因为“我的咖啡”和“咖啡网格”使用相同的模型。我想做的是直接从“成分”拖到“咖啡网格”中。
我看到的主要区别是,在设置之后,Gridster 的 DOM 看起来像这样:
<div gridster>
**<div ng-transclude>**
<ul>
<li></li>
</ul>
</div>
</div>
ui-sortable 看起来像这样:
<div ui-sortable>
<ul>
<li></li>
</ul>
</div>
所以 angular-gridster 正在添加一个<div ng-trasclude>
,让我认为 ui-sortable 可能无法附加到 DOM 元素,因为那个意外的 div 在那里。
我还在本地逐步浏览了 ui-sortable 源,并确定它的更新方法永远不会被调用。成功的拖放将调用以下方法:
start
activate x2
update
remove
receive
update
stop
试图拖入 angular-gridster 看起来像这样:
start
activate x3
stop
但是,我无法确定为什么从未调用 update 并且没有引发错误。
我意识到这是一个非常具体的问题,我希望有人可能遇到过同样的问题,或者愿意帮助我进行一些调试。提前致谢!