我尝试在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
答案 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);