#jquery #backbone.js #jquery-ui-sortable
#jquery #backbone.js #jquery-ui-сортируемый
Вопрос:
Хорошо, итак, я сортирую группу виджетов панели мониторинга с помощью пользовательского интерфейса jQuery и хотел бы сохранить новый порядок виджетов. Каков наилучший подход к этому? Есть идеи?
Я думал о том, чтобы указать атрибут «порядка» в модели следующим образом:
widgetsModel: Backbone.Model.extend({
defaults: {
name: 'Widget',
category: 'uncategorized',
order: '0',
content: 'No Content'
},
initialize: function(i) {
this.bind("change:name", function() {
var name = this.get("name");
console.log('From Model: ' name);
});
this.bind('error', function(model, error) {
alert(error);
});
}
})
Затем в коллекции у меня есть это:
widgetsCollection: Backbone.Collection.extend({
model: mw.models.widgetsModel,
localStorage: new Store('widgets_' mw.mainTab),
initialize: function(widget){
var $this = this;
_.bind('add', function(widget){
//console.log(widget.get('name'));
});
$('#dash_widget_container').sortable({
items:'.module_wrap',
accepts:'.module_wrap',
handle: '.module_header',
tolerance: 'pointer',
revert:true,
placeholder: "ui-state-highlight"
});
},
nextOrder: function() {
if (!this.length) return 1;
return this.last().get('order') 1;
},
comparator: function(widgets) {
return widgets.get('order');
}
})
На данный момент я застрял. Есть идеи?
Ответ №1:
Как насчет сброса WidgetsCollection, а затем возврата WidgetModels в новый порядок.
console.log(widgetsCollection.models) // => model1, model2, model3
widgetsCollection.reset([model2, model3, model1]);
console.log(widgetsCollection.models) // => model2, model3, model1
Вы можете использовать пользовательский интерфейс jQuery для получения нового заказа. Таким образом, они сохраняются по порядку и не требуют дополнительных накладных расходов.
Комментарии:
1. Спасибо, Крик 🙂 Я все еще немного запутался в JS MVC, но это помогает!