0

我将我的应用程序升级到了 AngularJS 1.2,因此也切换到了 ui-sortable v 1.2。

排序是为 Accordion-Groups 实现的(来自 ui-bootstrap)。使用可排序的主树版本,我可以在手风琴标题内收听 ng-mouseover/ng-mouseleave,但使用 1.2 版本,只要我没有进行任何排序,mouseevents 只会收听。在对排序顺序进行任何更改后,鼠标事件变得聋......

这是一个 Plunker:http ://plnkr.co/edit/n8yms9pb7uJp77zZ9LFK?p=preview

谁能给我一些建议如何解决这个问题?谢谢

4

2 回答 2

1

身份问题。

elementInsertedByDropping !== elementSelectedAndDragged

在控制台中,可以验证上面的断言。这样就可以将问题的类别缩小到一个相对熟悉的问题。

我自己也在学习 Angular,我也遇到了 ui-sortable 的问题;请不要认为我的意见是确定的。但是,我认为问题在于 $watch 侦听器需要重新绑定到新元素,因为它是在 Angular 之外异步创建的。

“ng.$ro​​otScope.Scope”文档在 $apply 部分中稍微清楚地描述了这种情况。如果我是正确的,您将需要$scope.$apply(...)在您的控制器中编写代码,或者[最好]编写一个处理插入的自定义指令。

幸运的是,jQuery-ui-sortable 的“更新”事件似乎可以很容易地在自定义指令中使用,以确保元素被绑定。我发现博主们尊重TheCodeMichal Ostruszka以相当清晰的术语讨论了编写 jQuery-ui-sortable 指令的问题;Greg Gigon 和其他几个人也是如此,但我现在只能提供两个链接。

如果我以后能提供更准确的信息,我会修改这个答案;我自己还在学习这些东西,我想知道如何做一些非常相似的事情。


[编辑我对 Angular-UI-Sortable 不够熟悉,不知道这是一个错误还是只是缺少功能。]

于 2013-12-11T17:11:44.703 回答
0

看起来像 ui-sortable 中的错误。

我的猜测:它似乎正在丢失事件指令中的绑定,可能是因为它破坏了旧的 DOM 元素并创建了一个新元素,而没有重新附加范围$compile我会保存这个 plunk 并在他们的 GitHub 存储库上提交和发布

于 2013-12-11T17:10:11.827 回答