Вы не можете, по крайней мере, не напрямую. MultiSelect
является одним из простейших виджетов, которые я думаю, и является просто оберткой. Это означает, что в нем нет специальных функций, и если вы хотите иметь функцию сортировки, вам придется сделать один самостоятельно.
Лучший способ сделать это самостоятельно, расширив виджет. Пример:
declare("dijit/form/MultiSelect", [MultiSelect], {
sort: function() {
var domNodes = Array.prototype.slice.call(this.containerNode.children);
domNodes.sort(function(a, b) {
if (a.innerHTML < b.innerHTML) {
return -1;
} else if (a.innerHTML == b.innerHTML) {
return 0;
} else {
return 1;
}
});
this.containerNode.innerHTML = "";
array.forEach(domNodes, function(node) {
this.containerNode.appendChild(node);
}, this);
}
});
Это довольно легко. Мы добавляем функцию под названием sort()
, а затем просто получаем список всех дочерних элементов, сортируем их с помощью функции sort()
из массива, а затем удаляем всех дочерних элементов и добавляем отсортированные дочерние элементы.
Чтобы использовать его, вы можете сделать что-то наподобие: dijit.byId(leftListId).sort()
сразу после выполнения вашего addSelected()
.
Пример JSFiddle можно найти here.
Виджеты из инструментария Dojo предоставляют множество обработчиков событий, чтобы пользователь мог переопределить. Проверьте http://dojotoolkit.org/api/, чтобы узнать, какие события вы можете обнаружить. – undefined