mongoose SortableJS:放置请求后项更改位置

gwo2fgha  于 2023-03-03  发布在  Go
关注(0)|答案(1)|浏览(99)

我正在建立一个网页和作为数据库我使用mongodb( Mongoose )。我有一页,我列出了一些文件(ID、日期、状态等)。然后我可以单击该项目以查看更多详细信息。在该页面上,我添加了一个下拉菜单来更改一些值。当我更改值时(ajax put request-〉mongoose findByIdAndUpdate)然后返回到列表页面,我的列表的顺序已经改变了,我改变的条目是列表中的第一个条目。
我的for循环来创建列表:

<div id="simpleList" class="list-group">
    <% items.forEach(function(item) { %>
    <div class="box-item list-group-item">

        <div class="box-normal row-1 margin-left filtered">
            <p><%= item.itemId %></p>
        </div>

        <div class="box-normal row-1 margin-left filtered">
            <p><%= item.projectName %></p>
        </div>

        <a id="link-text" class="bold row-1 align-right" href="srequest/<%= item.itemId %>">More details</a>
        <p class="row-1 icon-drag">
            <span class="my-handle"><i class="fas fa-arrows-alt-v fa-3x" title="Move item"></i></span>
        </p>

    </div>
    <% }); %>
</div>

SortableJS列表的代码:

<script>
Sortable.create(simpleList, { 
    store: {
  filter: '.filtered', // 'filtered' class is not draggable
  handle: '.my-handle',
  animation: 0,

        /**
         * Get the order of elements. Called once during initialization.
         * @param   {Sortable}  sortable
         * @returns {Array}
         */
        get: function (sortable) {
            var order = localStorage.getItem(sortable.options.group.name);

            return order ? order.split('|') : [];
        },
        /**
         * Save the order of elements. Called onEnd (when the item is dropped).
         * @param {Sortable}  sortable
         */
        set: function (sortable) {
            var order = sortable.toArray();

            localStorage.setItem(sortable.options.group.name, order.join('|'));
        }
  }
 });

</script>

即使我用选项"disable:true "当我更新某些内容时,该项目仍将成为第一个。
我想更新后的条目会被当作新条目处理,因此会移到列表的顶部。有没有办法在我离开那个页面之前存储列表的顺序?
提前感谢您的帮助!
BR克里斯蒂安

stszievb

stszievb1#

你需要一个组名和存储的功能只需要获取和设置参数。这将正常工作。

Sortable.create(simpleList, { 
  group: "myList",
  filter: '.filtered', // 'filtered' class is not draggable
  handle: '.my-handle',
  animation: 0,
  store: {
        /**
         * Get the order of elements. Called once during initialization.
         * @param   {Sortable}  sortable
         * @returns {Array}
         */
        get: function (sortable) {
            var order = localStorage.getItem(sortable.options.group.name);

            return order ? order.split('|') : [];
        },
        /**
         * Save the order of elements. Called onEnd (when the item is dropped).
         * @param {Sortable}  sortable
         */
        set: function (sortable) {
            var order = sortable.toArray();

            localStorage.setItem(sortable.options.group.name, order.join('|'));
        }
  }
 });

相关问题