Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/facebook/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何使用ember实现多次拖放_Javascript_Html_Ember.js_Drag And Drop - Fatal编程技术网

Javascript 如何使用ember实现多次拖放

Javascript 如何使用ember实现多次拖放,javascript,html,ember.js,drag-and-drop,Javascript,Html,Ember.js,Drag And Drop,我见过不同的单个对象拖放示例,如本问题中所述 但是,由于拖动事件在视图对象上,我不知道如何实现多视图选择拖放(例如在电子邮件客户端或evernote中) 任何jsbin都非常受欢迎。这是一个使用ember和jqueryui进行拖放的示例。虽然没有必要将可拖动组件拆分为单独的视图,但拆分它们只是为了演示op提到的多视图选择 因此,将下面的代码与本线程中的示例结合起来 (请看评论) hbs <script type="text/x-handlebars">

我见过不同的单个对象拖放示例,如本问题中所述

但是,由于拖动事件在视图对象上,我不知道如何实现多视图选择拖放(例如在电子邮件客户端或evernote中)


任何jsbin都非常受欢迎。

这是一个使用
ember
jqueryui
进行拖放的示例。虽然没有必要将可拖动组件拆分为单独的视图,但拆分它们只是为了演示op提到的多视图选择

因此,将下面的代码与本线程中的示例结合起来

(请看评论)

hbs

<script type="text/x-handlebars">
    <h2> Welcome to Ember.js</h2>

    {{outlet}}
  </script>

  <script type="text/x-handlebars" data-template-name="index">
    <ul>
    {{#each post in model}}
    {{#with post}}
    <div class="placeholder">
      {{render "post" post}}
      </div>
      {{/with}}
    {{/each}}
    </ul>
  </script>
  <script type="text/x-handlebars" data-template-name="post">
  <div class="post" {{bind-attr id="id"}}>
    {{name}}
    </div>
  </script>
App = Ember.Application.create();

App.Router.map(function() {
  // put your routes here
});

App.IndexRoute = Ember.Route.extend({
  model: function() {
    
    return allPosts;
  }
});

App.IndexView = Ember.View.extend({
  classNames:["post-container"]
});

App.PostController = Ember.ObjectController.extend({
});

App.PostView = Ember.View.extend({
  templateName:"post",
  classNameBindings: ['selected'],
  selected:Ember.computed.alias("context.selected"),
   didInsertElement:function(){
     
    this.$(".post").draggable({ revert: "invalid", snap: ".post-container",snapMode:"inner" });
    
    var self = this;
        
        /*jquery ui create the draggable component*/
        this.$(".post").draggable({ revert: "invalid", snap: ".post-container",snapMode:"inner" });
        
        /*create the droppable component*/
        this.$().droppable({
          drop:function(event,ui){
            
            var draggedPostId = parseInt(ui.draggable.attr("id"),10);
            var draggedPost = self.get("parentView").get("controller").findBy("id",draggedPostId);
            var draggedOrder = draggedPost.get("order");
            
            var droppedPost = self.get("controller").get("model");
            var droppedOrder = droppedPost.get("order");
            
            draggedPost.set("order",droppedOrder);
            droppedPost.set("order",draggedOrder);
            
            allPosts = allPosts.sortBy("order");
            self.get("parentView").get("controller").set("model",allPosts);
          }
        });
   },
  
    click:function(){
      this.toggleProperty("controller.selected");
    }
  
});


App.Post = Ember.Object.extend({
  id:null,
  name:null,
  order:null
});

/*this would come from a server or web storage*/
var allPosts = [];
     allPosts.pushObject(App.Post.create({id:1,name:"post1",order:1}));
     allPosts.pushObject(App.Post.create({id:2,name:"post2",order:2}));
allPosts.pushObject(App.Post.create({id:3,name:"post3",order:3}));
allPosts.pushObject(App.Post.create({id:4,name:"post4",order:4}));
allPosts.pushObject(App.Post.create({id:5,name:"post5",order:5}));

我用jqueryUI来做这个。将下面的文件添加到您的应用程序中,然后您可以扩展自定义jquery视图


如果没有jquery ui,就没有办法让它工作,就只有余烬视图事件吗?@borisrorsvort据我所知,余烬中没有与拖放相关的现成功能,老实说,拥有这样的功能会很奇怪。在这里,我试图演示一个简单的示例,以及使用视图实现您的需求的建议。另外,您当然不能使用jquery ui和中提到的漂亮实现,只需删除jquery ui部分并添加线程中提到的mixin即可。谢谢,但在相关问题中,无法一次拖动多个。所以不,我不能不使用jquery uiJaime就使用另一个例子,这似乎是一个有趣的选择。你能举一个例子说明如何用它在Ember中实现拖放吗?