在 ember 中,如何将视图数据从拖放中传递?

Posted

技术标签:

【中文标题】在 ember 中,如何将视图数据从拖放中传递?【英文标题】:In ember, how do I pass view data from a drag into a drop? 【发布时间】:2012-09-24 23:08:10 【问题描述】:

我正在使用 ember latest 和 jquery.ui 的 Draggable 和 Droppable。我还使用了一些有才华的 ember 人创建的 mixin,用于在 ember 中创建 Draggable 和 Droppable 视图。这是小提琴:

http://jsfiddle.net/inconduit/6n49N/7/

我需要将视图的内容附加到拖动事件,以便我可以在放置事件中访问它。直接使用 jquery,我知道你会这样做 $(..).draggable( .. ).data("myData","some data here");但我不知道如何在这个 ember 实现中引用视图的内容。

这是小提琴中 App.Draggable 的一个 sn-p:

  App.Draggable = JQ.Draggable.extend(
     appendTo: 'body',
     helper: function() 
          $(this).data("myData","this is where actual data would go");

JQ.Draggable 扩展了 Ember.View。在 helper() 函数内部,'this' 指的是实际的 DOM 元素,我不知道如何引用 View 的变量。我想传递视图的内容,以便可以在此处检索它:

  App.Droppable = JQ.Droppable.extend(
      drop: function(event,ui) 
          alert('Dropped! ' + $(ui.draggable).data("myData"));

可拖动的模板如下所示:

  #view App.Draggable contentBinding="App.anObject"Drag me/view

我想传递该内容。请看fiddle,相关函数在javascript底部定义。

【问题讨论】:

【参考方案1】:

在这里回答我自己的问题。

我在 didInsertElement 回调中附加了如下数据:

App.DraggableDataView = App.Draggable.extend(
    didInsertElement: function() 
        this._super();
        var element = this.get('element');
        $(element).data('myData',this.get('content'));
    ,
);

【讨论】:

你如何在验收测试中测试拖放?

以上是关于在 ember 中,如何将视图数据从拖放中传递?的主要内容,如果未能解决你的问题,请参考以下文章

在 Qt 拖放中使用 QMimeData 传递数据

Qt拖放中的热点是啥意思?

如何在拖放中停止 dragend 的默认行为?

如何倾斜/旋转在javascript拖放中拖动的项目?

在 Angular Material CDK 拖放中,如何防止项目随着元素移动而自动重新排列?

如何从文本文件中用逗号分隔行中的特定行和值