2

我正在向我的 Meteor 应用程序添加使用 jQuery-UI 的拖放功能,以获取使用 Meteor 呈现的模板。通过使用.rendered模板的回调,我可以很好地设置draggable和小部件。droppable

技巧部分是发生下降时。jQuery-UI 在回调中给出一个事件和一个对象:http: //api.jqueryui.com/droppable/#event-drop。但是,我需要找到流星模板实例或基础集合数据 id,以便对可拖动和可放置执行某些操作,例如更新集合等。

最好的方法是什么?我见过的最接近任何东西的是一个名为的属性_spark_fooObjectId,它似乎是由 Meteor 添加的。但这甚至意味着什么?

在此处输入图像描述

基于阅读https://github.com/meteor/meteor/wiki/Spark,我的第一次尝试是尝试以下操作:

drop: (event, ui) ->
  console.log Spark.getDataContext(ui.draggable)

但是,这会返回null。还有其他想法吗?

4

2 回答 2

0

糟糕,这只是一个小小的疏忽。正确的解决方案是

Spark.getDataContext(ui.draggable.context)

因为ui.draggable是一个 jQuery 对象。

于 2013-08-02T22:02:29.310 回答
0

好吧,如果您想要拖动的元素的数据,一种解决方案可能是使用模板数据对您有利。例如,您可以在 Mongo 文档中放置一个名为“label”的字段,并将可拖动的内容包装在像这样的 div 中:

{{#each yourHelper}}
  <div id={{label}}> 
    the rest of your content
  </div>
{{/each}}

然后,例如,如果您想从数据库中的同一文档中获取另一个字段,您的 JS 将如下所示:

 var myquery = $(event.target).parents("div").attr("id");

console.log(myCollection.findOne({"label":myquery}).anotherField);

如果您更喜欢使用孩子,同样的事情也适用,只是您会使用find()而不是parents()

于 2017-03-08T11:43:57.510 回答