2011-07-05 71 views
7

我有一个backbone.js项目,我一直在努力,并且我已经设置好,以便我可以拖放行(这是backbone.js模型),并借助jQuery UI 更新事件我能够让我的模型重新定位它们的顺序,一切都很顺利。我想知道是否有人有新的更清洁的方式来实现这一点。我在下面列出了一些代码。jQuery UI的排序和backbone.js

$(".section").sortable({items: 'tr', update: function() 
{ 
    console.log("Event Fire!"); 
    secv.mySort(); 
}}); 

secv是我的查看模型,持有表。 mySort函数通过并计算出元素的顺序并进行必要的更新。

+0

你对这个解决方案不喜欢什么?没有大量的代码,我认为它工作得很好。这就是我现在也可以通过骨干来实现可排序的功能。 – c3rin

+0

另一个更复杂的选项是这里:http://stackoverflow.com/questions/10147969/saving-jquery-ui-sortables-order-to-backbone-js-collection – Cymen

回答

1

我假设你在初始化方法中设置视图的集合属性。在该方法中,您应该将视图方法绑定到集合的“更改”或“刷新”事件。这种方法将简单地重新绘制排序后的集合;如有必要,在收集之前对收集进行分类。

从理论上讲,您的模型可能会更新自己的新位置,如果集合具有比较器功能,集合会自动采取措施。如果是这种情况,绑定到集合的'刷新'事件将触发上述方法,只需要重新呈现视图的集合部分。

+0

而且你也可以指定新的比较器之前收集排序。 'collection.comparator(function(model){return model.get('some_property');}); collection.sort();'它会触发集合_reset_事件,您可以将它绑定到呈现集合视图。 –

+3

这是如何回答原来的问题?问题在于视图(DOM)排列在模型集合之前,而不是相反。 – kahoon