Это решение кода после того, как результаты получены из Mongo. Использование карты для хранения индекса и затем замены значений.
catDetails := make([]CategoryDetail, 0)
err = sess.DB(mdb).C("category").
Find(bson.M{
"_id": bson.M{"$in": path},
"is_active": 1,
"name": bson.M{"$ne": ""},
"url.path": bson.M{"$exists": true, "$ne": ""},
}).
Select(
bson.M{
"is_active": 1,
"name": 1,
"url.path": 1,
}).All(&catDetails)
if err != nil{
return
}
categoryOrderMap := make(map[int]int)
for index, v := range catDetails {
categoryOrderMap[v.Id] = index
}
counter := 0
for i := 0; counter < len(categoryOrderMap); i++ {
if catId := int(path[i].(float64)); catId > 0 {
fmt.Println("cat", catId)
if swapIndex, exists := categoryOrderMap[catId]; exists {
if counter != swapIndex {
catDetails[swapIndex], catDetails[counter] = catDetails[counter], catDetails[swapIndex]
categoryOrderMap[catId] = counter
categoryOrderMap[catDetails[swapIndex].Id] = swapIndex
}
counter++
}
}
}
Редактирование поля формы файла является угрозой безопасности и таким образом отключено на большинстве браузеров, и должен быть отключенным на Firefox. Это не хорошая идея полагаться на эту функцию. Вообразите, был ли кто-то в состоянии, с помощью JavaScript, для изменения поля загрузки скрытого файла на, позволяет, говорят,
c:\Users\Person\Documents\Finances
Или
C:\Users\Person\AppData\Microsoft\Outlook.pst
:)
Предположение, что Вам нужна эта функциональность, таким образом, можно клонировать входной элемент и поместить его в скрытую форму, которая затем ОТПРАВЛЯЕТСЯ на скрытый iframe...
element.clone IE () реализация не переносит значение для входного типа = "файл", таким образом, необходимо пойти наоборот:
// Clone the "real" input element
var real = $("#categoryImageFileInput_" + id);
var cloned = real.clone(true);
// Put the cloned element directly after the real element
// (the cloned element will take the real input element's place in your UI
// after you move the real element in the next step)
real.hide();
cloned.insertAfter(real);
// Move the real element to the hidden form - you can then submit it
real.appendTo("#some-hidden-form");