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

时间:2015-02-12 22:09:23

标签: smalltalk pharo

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

的Seaside书
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:接收一个数组。

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

1 个答案:

答案 0 :(得分:0)

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

解决方案:在存储之前将#asOrderedCollection发送到数组:

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