将 jQuery UI 拖/放与backbone.js 结合使用

发布于 2025-01-08 09:10:08 字数 368 浏览 1 评论 0原文

我的 Backbone 应用程序的一项功能涉及将类型 A 的模型与类型 B 的模型关联起来,这是通过将视图 A 拖动到视图 B 上来完成的。在 B 的视图类中,我监听 drop 事件,并从中获取视图 A 的 DOM 元素,但没有有关模型 A 的信息。

检索此信息的最佳方法是什么?到目前为止,我最好的猜测是

  • 让模型 A 在应用程序的命名空间中保存对其自身的引用,如果放置处理程序尚未这样做,则在拖动结束时删除此引用,以便
  • 在视图 A 上触发事件,同时传递对模型 B 的引用事件,然后让模型 A 调用模型 B 的方法...
  • 将模型 A 存储为视图 A 的 $.data 属性,

但所有这些方法似乎都很复杂/不优雅。

One feature of my Backbone app involves associating models of type A with models of type B, which is done by dragging view A onto view B. In B's view class I listen for the drop event and from this I get the DOM element of view A, but no information about model A.

What's the best way to go about retrieving this information? My best guesses so far are

  • have model A save a reference to itself in the app's namespace, removing this reference on drag end if the drop handler hasn't already done so
  • fire an event on view A, passing a reference to model B along with the event, and then having model A call a method of model B...
  • store model A as a $.data attribute of view A

but all these approaches seem convoluted/inelegant.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

游魂 2025-01-15 09:10:08

作为数据属性存储实际上是相当干净的,而且性能也不会差。您可以将模型的 cid 属性作为 data-cid 存储在 DOM el 上,并使用集合的 getByCid 方法来检索模型。

Storing as a data-attribute is actually quite clean, and the performance will not be bad. You can store the model's cid attribute as data-cid on the DOM el, and use the collection's getByCid method to retrieve the model.

此岸叶落 2025-01-15 09:10:08

我认为最干净的方法是像 kinakuta 在评论中提到的那样,使用 id 将 dom 元素与模型关联起来,例如 数据属性

从实现的角度来看,这是有意义的,因为它允许您具有双向依赖关系,并且当您的应用程序变得更加复杂时,您可以轻松地引用另一个依赖项。

你提到的解决方案也可以工作,但是,我觉得解决方案 A 似乎有点黑客,解决方案 B 的代码不太干净,解决方案 C 本质上与使用数据属性相同。

I think the cleanest way to go about it is as kinakuta mentioned in a comment to associate a dom element with the model using the id in e.g. a data-attribute.

This makes sense from an implementation point of view because it allows you to have a bidirectional dependency and you can reference one from the other easily later on when your application beccomes more complex.

Your mentioned solutions would work as well, however, I feel Solution A seems a little hackish, Solution B is less clean code wise and Solution C is essentially the same as using a data-attribute.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文