Существует ли контейнер списка Dojo, который автоматически сортирует дочерние виджеты?
Мне нужен графический контейнер, в который я могу добавлять и удалять свои пользовательские виджеты, где я могу установить функцию сортировки, которая автоматически применяется при выполнении этих операций.
В Додзё уже есть подходящий объект, который я пропустил? Или, может быть, я не думаю о проблеме правильно?
Если нет, то есть ли примеры и т. Д. Минимально работающего пользовательского контейнерного виджета?
2 ответа
Не думаю, что на самом деле - как бы знать, как функционал сортировки стандартного компонента знает, с какими параметрами он должен взвешивать порядок, когда контейнеры могут содержать любой тип виджета?
Использование расширения виджета макета будет вашим лучшим вариантом imho. У каждого из них есть функция для добавления потомков, следуя этому прототипу:
addChild(/*Object*/ dijit, /*Integer?*/ insertIndex)
dijit.layout.StackContainer
является хорошей отправной точкой, она наследует от dijit._Container
(а также dijit.layout._LayoutWidget
). Таким образом, вы выбираете, когда вызывать функциональность расширения вашего переопределения.
dojo.declare("my.Container", [dijit._Container], {
getSortOrder : function(newDijit) {
var newIndex = -1; ??
// something to work with
var currentChildren = this.getChildren();
var currentDescendants = this.getDescendants();
return newIndex;
},
addChild: function(dijit, index) {
// figure out index
arguments[1] = this.getSortOrder(dijit);
this.inherited(arguments);
}
});
Но имейте в виду, что в layoutwidgets есть нечто большее, чем выбор порядка, а также позиционирование, как с параметром региона bordercontainer.
Используйте SitePen's dgrid, затем определите виджет List со столбцом типа Editor. Отправьте свой пользовательский виджет в параметр редактора. Виджет "Список" dgrid должен иметь возможность сортировки, как если бы он был сеткой на основе ваших данных, а столбец "Редактор" должен отображать все, что вы хотите, как часть содержимого элемента списка.
Если тебе что-нибудь понадобится, я буду рядом. Удача,