2014-09-27 64 views
0

指数给出一个面板入门当前拖动项目的Backbone.CollectionView

var panel = new Backbone.CollectionView({...}) 

如何获得当前的模型进行排序?

panel.on('sortStart', function(e) { 
    var index = something; 
}); 
+0

? – StateLess 2014-09-27 07:55:31

+0

如果我理解正确,您应该从模型视图中触发该事件。 – 2014-09-27 08:15:17

回答

2

我想你使用某种UI操作工具,例如jQuery UI。正如Lesha在她的comment中所说的那样,可以通过触发模型视图上的事件来完成。

//creting children view 
var PanelItem = Backbone.View.extend({ 

    events: { 
    "sortStart": "sortEventPropagation" 
    }, 

    initialize : function (options) { 
    this.parentView = options.parentView; 
    }, 

    sortEventPropagation: function(){ 
    this.parentView.trigger('sort:start:propagated', this.model); 
    }, 
}) 

每次创建panelItem视图时,都需要在选项中将其作为parentView传递给panelItem视图。

var childView = new PanelItem({ 
    parentView: panel 
}) 

而且面板上,你可以很容易地listenTo sort:start:propagated事件

var Panel = Backbone.CollectionView.extend({ 
    initialize: function(){ 
    this.listenTo(this, 'sort:start:propagated', function(model){ 
     //Do magic with model 
    }) 
    }, 
}) 
你想获得排序的完整集合,如果不是你是什么让模型分类意味着
+0

谢谢,我已经得到了这个工作。我不得不绑定到sortstop(在ul元素上拖拽列表)和sortStop(在Backbone.CollectionView上)。 – Zahymaka 2014-10-01 07:13:26