Seaside jQuery - 通过拖放对列表进行排序并通过 Ajax 将其发回会导致 OrderedCollection 变成数组?

Seaside jQuery - Sorting a list with drag and drop and sending it back via Ajax causes OrderedCollection to turn into an Array?

下面的代码来自 Seaside 书:http://book.seaside.st/book/web-20/jquery/enhanced-todo-application/drag-and-drop

html jQuery new sortable
    onStop:
            (html jQuery ajax
                    callback: [ :items | modelRole getModelRolePlayer setItemList: items ]
                    passengers: (html jQuery this find: 'li'));
    axis: 'y'

我的实例变量_itemList 最初是OrderedCollection。一旦我在页面中四处移动行,整个列表就会以新的顺序发回。但是,这次 setItemList: 接收到一个 Array.

这有意义吗?我错过了什么吗?

所以问题是 #callback:passenger: 使用 #subStrings: 从 AJAX 回调中获取元素 ID,然后对该集合执行 #collect: 以确定 Smalltalk对象。由于 #subStrings: return 是一个数组,因此 #collect: 也将 return 是一个数组。

解决方法:先将#asOrderedCollection发送到数组再存储:

(html jQuery ajax
  callback: [ :items | modelRole getModelRolePlayer setItemList: items asOrderedCollection ]
  passengers: (html jQuery this find: 'li'));