列表中的分拣函数从未调用过

时间:2017-06-27 15:10:20

标签: qooxdoo

我尝试在qx.ui.list.core.IListDelegate.sorter中实施qx.data.controller.List功能。我使用特定的排序函数设置控制器的委托。问题是,从未调用过分类函数。

var list = new qx.ui.form.List();

var rawData = [];
for (var i = 0; i < 10; i++) {
  rawData.push(i);
}
var data = new qx.data.Array(rawData);

var listController = new qx.data.controller.List(data, list);
listController.setDelegate({
    sorter : function(a, b) {
      console.log("test");
        if (Number(a.getLabel()) > Number(b.getLabel())) {
            return 1;
        }
        if (Number(a.getLabel()) < Number(b.getLabel())) {
            return -1;
        }
        return 0;
    }
});

// Document is the application root
var doc = this.getRoot();

doc.add(list,
{
  left : 100,
  top  : 50
});

以下是qx Playground中的示例:tinyurl.com/y6udac8g

1 个答案:

答案 0 :(得分:1)

qx.ui.list.core.IListDelegate.sorter用于配置qx.ui.list.List而不是qx.ui.form.List

检查文档中的example以使用sorter类的qx.ui.list.List功能

//create the model data
var rawData = [];
for (var i = 0; i < 2500; i++) {
 rawData[i] = "Item No " + i;
}
var model = qx.data.marshal.Json.createModel(rawData);

//create the list
var list = new qx.ui.list.List(model);

//configure the lists's behavior
var delegate = {
  sorter : function(a, b) {
    return a > b ? 1 : a < b ? -1 : 0;
  }
};
list.setDelegate(delegate);

//Pre-Select "Item No 20"
list.getSelection().push(model.getItem(20));

//log selection changes
list.getSelection().addListener("change", function(e) {
  this.debug("Selection: " + list.getSelection().getItem(0));
}, this);