sencha touch 2.2 list PullRefresh插件没有refreshFn方法
但是我们又需要他,所以需要自行扩展
代码如下
/**
* 重写下拉刷新插件,以支持refreshFn事件
*/
Ext.define('ux.plugin.RefreshFn', {
extend: 'Ext.plugin.PullRefresh',
alias: 'plugin.refreshFn',
requires: ['Ext.DateExtras'],
xtype:'refreshFn',
config: {
/**
*@ CFG {功能} refreshFn函数将被调用以刷新列表。
*如果没有定义,store里的函数将被调用。
*/
refreshFn: null,
lastUpdatedText: '上次刷新时间:',
loadingText: '加载中...',
pullRefreshText: '下拉可以手动刷新',
releaseRefreshText: '松开可以刷新',
lastUpdatedDateFormat: 'Y-m-d H:i'
}, loadStore: function () {
var me = this,
list = me.getList(),
scroller = list.getScrollable().getScroller();
me.setViewState('loading');
me.isReleased = false;
Ext.defer(function () {
scroller.on({
scrollend: function () {
if (me.getRefreshFn()) {
me.getRefreshFn().call(me, me);
} else {
me.fetchLatest();
}
me.resetRefreshState();
},
delay: 100,
single: true,
scope: me
});
scroller.minPosition.y = 0;
scroller.scrollTo(null, 0, true);
},
500, me);
}
});
用法:
Ext.define('app.view.list.Xml', {
alternateClassName: 'listXml',
extend: 'Ext.List',
requires: ['ux.plugin.RefreshFn'],
xtype: 'listXml',
config: {
title: 'Xml取值',
itemTpl: '{title}',
plugins: [{
xtype: 'refreshFn',
refreshFn: function (loaded, arguments) {
//开始刷新触发的时间,默认效果是只刷新第一页数据。不管后面显示了多少数据
//这里进行了处理,触发时清空所有数据,重新加载第一页数据。
loaded.getList().getStore().loadPage(1);
}
}],
store: 'blogList'
}
});