javascript-在带有虚拟列表的qooxdoo中无限滚动
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了javascript-在带有虚拟列表的qooxdoo中无限滚动,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1555字,纯文字阅读大概需要3分钟。
内容图文
![javascript-在带有虚拟列表的qooxdoo中无限滚动](/upload/InfoBanner/zyjiaocheng/678/57de9ab54696479192259a07a33aa09d.jpg)
我创建了一个虚拟列表,当用户在列表的顶部或底部滚动时,新数据将添加到虚拟列表的模型中.这似乎工作正常.我的问题是虚拟列表中的项目具有不相同的高度,因此我需要它们能够自行配置它们在用户屏幕上显示之后或之后的行高.为此,我在绑定委托中添加以下代码
item.addListenerOnce("appear", function() {
var height = item.getSizeHint().height;
pane.getRowConfig().setItemSize(id, height);
}, this);
这似乎可以解决列表中大多数项目的问题,但是有些项目根本不会触发外观事件.
这是操场上的代码http://tinyurl.com/q94dhlz
解决方法:
您可以使用与VirtualTree相同的技术来调整行宽.想法是等到WidgetCell层完成渲染.这将通过事件进行通知.然后向图层询问所有可见行,并调整这些小部件的高度.但是出于性能考虑,请执行以下异步操作:
qx.Class.define('my.List', {
extend: qx.ui.list.List,
members:
{
syncWidget : function(jobs)
{
qx.log.Logger.debug("syncWidget");
var firstRow = this._layer.getFirstRow();
var rowSize = this._layer.getRowSizes().length;
for (var row = firstRow; row < firstRow + rowSize; row++)
{
var widget = this._layer.getRenderedCellWidget(row, 0);
if (widget != null)
{
var height = widget.getSizeHint().height;
qx.log.Logger.debug("height: " + height + " row:" + row + " widget: " + widget.getDay())
this.getPane().getRowConfig().setItemSize(row, height);
}
}
},
_initLayer : function()
{
this.base(arguments);
this._layer.addListener("updated", this._onUpdated, this);
},
_onUpdated : function(event)
{
if (this.__deferredCall == null) {
this.__deferredCall = new qx.util.DeferredCall(function() {
qx.ui.core.queue.Widget.add(this);
}, this);
}
this.__deferredCall.schedule();
}
}
});
这是操场上的代码http://tinyurl.com/qcy8a7c
内容总结
以上是互联网集市为您收集整理的javascript-在带有虚拟列表的qooxdoo中无限滚动全部内容,希望文章能够帮你解决javascript-在带有虚拟列表的qooxdoo中无限滚动所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。