sencha列表分页插件

2024-03-31

我正在尝试使用 sencha touch 的列表分页插件。但几乎没有关于如何使用它的好(或坏)文档,我很困惑。

当我激活列表中的插件时

this.myList = new Ext.List({
  store: this.myStore,
  plugins: [{
    ptype: 'listpaging',
    autoPaging: false
  }],
  itemTpl: '...'
});

“加载更多”文本和加载图像将添加到列表末尾。

但我不知道如何配置我的商店以使该插件能够加载更多数据。

App.regStore('MyStore', {
 model: 'myModel',
 proxy: {
    type: 'ajax',
    url: 'http://mydomain.com/json?howmany=10&page=1',
    reader: {
        type: 'json',
        root: 'results'
    }
  }
});

App.stores.myStore = Ext.StoreMgr.get('MyStore');

如何配置我的商店,以便当我点击“加载更多”时,商店会显示第 2 页并将其自动添加到列表中?


我在 SenchaTouch 2 中的 ListPaging 插件上遇到了类似的问题,并设法在到达数据集末尾时解决“加载更多”消息行为。

这建立在约翰·戈登(John Gordon)提出的基础上(关于指定pageSize and clearOnPageLoad配置选项),因为这些属性在 Senchatouch 2 中似乎是相同的。我还没有详细研究 SenchaTouch 1.x。在 SenchaTouch 2 中,所有配置选项必须在config财产:

Ext.define('MessagingApp.store.MessageThreads', {
    extend  : 'Ext.data.Store',
    requires: ['MessagingApp.model.MessageThread'],

    config:
    {
        model: 'MessagingApp.model.MessageThread',

        autoLoad: false,
        clearOnPageLoad: false,  // This is true by default
        pageSize: 10,            // This needs to be set for paging

        proxy: {
            type: 'jsonp',
            pageParam: 'currentPage',
            limitParam: 'pageSize',
            url: APIURL + '/message-app-service/GetMessageThreads',
            reader: {
                type: 'json',
                rootProperty: 'Data'
            }
        }
    }
});

在视图中,我们指定插件,我们可以覆盖“加载更多”和“没有更多记录”消息:

{
    xtype:'dataview',
    store:'MessageThreads',
    id:'threadList',
    itemTpl:Ext.create('Ext.XTemplate',
        '<!-- template markup goes here -->',
        {
            //custom helper functions here
        }
    ),
    plugins:[
        {
            xclass:'Ext.plugin.ListPaging',
            autoPaging: true,

            // These override the text; use CSS for styling
            loadMoreText: 'Loading...',
            noMoreRecordsText: 'All messages loaded'
        }
    ]
}

问题是,虽然我们的 Web 服务返回特定页面的记录数组,但没有总体总数属性,插件需要该属性来确定何时加载所有记录。因此,“加载更多”消息将保留(已接受解决方案中的问题#1)。所以在init我们的控制器的功能,我们必须附加一个事件处理程序load当收到新的数据页面时要挂钩的存储上的事件:

Ext.define('MessagingApp.controller.Messages',
{
    extend: 'Ext.app.Controller',

    config:
    {
        views: [
            'MessageThreads',
            // Other views referenced by this controller
        ],

        stores: [
            'MessageThreads'
        ],

        refs:
        {
            // References to UI elements by selector...
        }
    },

    init: function() {
        // Other internal initialisation...

        this.control(
        {
            // Selector-object pairs...
        });

        // Provide a means to intercept loads of each page of records
        var threadStore = Ext.getStore('MessageThreads');
        threadStore.addBeforeListener('load', this.checkForThreadListEnd, this);
    },

    // Remaining controller functions...

});

在处理程序中,当返回的记录数小于页面大小时,我们意识到已经到达数据集的末尾。如果总记录数是页面大小的倍数,则最后一个“页面”将有一个空数组。一旦确定了数据集的末尾,我们就更新totalCount商店的配置属性:

checkForThreadListEnd: function(store, records, isSuccessful) {
    var pageSize = store.getPageSize();
    var pageIndex = store.currentPage - 1;    // Page numbers start at 1

    if(isSuccessful && records.length < pageSize)
    {
        //Set count to disable 'loading' message
        var totalRecords = pageIndex * pageSize + records.length;
        store.setTotalCount(totalRecords);
    }
    else
        store.setTotalCount(null);
},

// Other controller functions...

因为这是一个“之前”事件处理程序,所以在插件决定是否显示“加载更多”或“没有更多记录”消息之前,该属性将被重要更新。不幸的是,该框架没有提供隐藏“不再有记录”消息的方法,因此这必须通过 CSS 来完成。

希望这可以帮助。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

sencha列表分页插件 的相关文章

  • Sencha Touch 2 MVC - 如何使用按钮切换视图

    我有这个控制器 Ext define MyApp controller Test extend Ext app Controller config refs ref first selector first ref second selec
  • 如何在 Sencha Touch 中向模型添加自定义验证规则

    Sencha 的这篇文章介绍了如何使用内置验证规则 存在 长度 格式 包含 排除 并提到添加自定义规则很容易 但没有解释如何操作 我用谷歌搜索了很多 并阅读了 sencha 文档 但我找不到任何关于如何做到这一点的信息 有任何想法吗 htt
  • Sencha Touch MVC——通过控制器传递数据的推荐方式?

    我正在使用 Sencha Touch 作为移动应用程序 并使用其中的 MVC 功能 我非常喜欢 Sencha 但在使用控制器将数据从一个 屏幕 传递到下一个 屏幕 时遇到了一些麻烦 有一个与许多 Sencha 小部件关联的 记录 属性 例如
  • FB.getLoginStatus 突然停止在 Android 浏览器上工作

    我曾经使用过这段代码 FB getLoginStatus function response 但突然间它不起作用 回调不会触发 但奇怪的是 仅适用于 android 本机浏览器 测试过 4 0 4 1 它适用于 iPhone iPad Ch
  • 警告说“Id”存在并且应该被销毁

    大多数时候 当我多次单击同一按钮时 调用同一函数两次或更多次时 我会看到以下警告 WARN WARN Ext Component constructor Registering a component with a id name whic
  • Java - 无法解析的日期,需要格式匹配“GMT-0400”

    我有以下Java DateFormat formatter new SimpleDateFormat EEE MMM dd yyyy HH mm ss zZ zzzz Locale ENGLISH Calendar cal Calendar
  • 纯 Ajax 请求和传统 Ajax 请求是否可以在本机/混合移动应用程序上实现?

    我知道使用 JSONP 技术http en wikipedia org wiki JSONP我们可以做一个跨域的 Ajax 请求 但对于这个问题来说 这并不算 纯粹和传统 我只是想知道本机 混合应用程序是否也适用 同源策略 http en
  • 使用slidenavigatoin动态地将xtype项目添加到面板

    所以我试图将项目动态地放置到具有slidenavigation特征 FlyoutNavigation js Ext define APN view FlyoutNavigation id flyoutNavigationPanel exte
  • 从 tpl Sencha 传递参数

    我的json如下 status TRUE message Words data name paint author snooky word id 1 category Business definitions rating Green de
  • 如何使 dataview.list 在 Sencha Touch 2 中可见?

    这里是 Sencha Touch 新手 也就是说 在过去一天左右的时间里 我一直在慢慢地思考这个问题 让我发疯的一件事是表单面板和列表由于某些奇怪的布局原因而没有显示 我不明白为什么 例如 我有以下搜索视图 Ext define NC vi
  • 使用 Sencha 添加视频

    我想使用 Sencha 在我的网站中添加 YouTube 视频 我使用以下代码 var pnl new Ext Panel layout type vbox pack center items xtype video url space m
  • 在 Windows Phone 上部署 Sencha 触摸应用程序

    我有一个现有的 Sencha touch 项目 我想将其部署在 Windows Phone 设备上 到目前为止 我已经尝试将 Sencha touch 与 Phonegap 结合起来 通过 Phonegap 进行部署 但没有成功 据报道 由
  • sencha 中的按钮背景颜色

    我是 sencha touch 的新手 我们如何将按钮的背景颜色更改为白色 我有一个按钮 每个角都有两个图像 我希望按钮是纯白色的 我尝试使用这样的CSS quest background url images quest jpg no r
  • 无法访问 sencha 中整个控制器的全局变量

    我一直在尝试访问一个控制器内的全局值 但无法访问它 我一直在关注这个如何在sencha中定义全局变量 https stackoverflow com questions 18095037 how to define global varia
  • 将 Sencha Touch 与 jQuery 相结合

    我已经在 Sencha Touch 工作了几个星期 虽然这个框架非常强大 但我仍然发现它有一些难以使用的地方 特别是用于复杂嵌套 JSON 结果的 JSONP 数据存储 因此 我决定结合 jQuery 有用的 AJAX 和 JSON 函数
  • sencha列表分页插件

    我正在尝试使用 sencha touch 的列表分页插件 但几乎没有关于如何使用它的好 或坏 文档 我很困惑 当我激活列表中的插件时 this myList new Ext List store this myStore plugins p
  • 选项卡面板中的 Vbox 布局问题

    我有一个问题vbox布局所以我创建了一个简单的例子 这说明了问题 这让我vbox布局到fit屏幕的高度 On the hbox屏幕上 视图看起来符合预期 然而 当我简单地改变hbox to vbox所有文本都覆盖在左上角 所有代码都在下面给
  • cordova 本地通知声音在 ios 和 Android 中不起作用

    我在用cordova plugin local notifications https github com katzer cordova plugin local notifications插入 现在我在 Android 和 iOS 中获
  • 将分段按钮置于容器中居中?

    我有一个带有分段按钮的选项卡导航栏 其中还包含一张卡片 布局 一切正常 然而 我正在努力让我的 分段按钮位于屏幕中央 我不想让它伸展 我已经包含了主要视图并将所有代码放在煎茶小提琴 http www senchafiddle com KFy
  • 未捕获的 InvalidValueError:setMap:不是 Map 的实例

    当我使用sencha touch2 2 1时 我遇到了一个问题 在查看器中 items id mapCanvas xtype map useCurrentLocation true 在控制器中 var map Ext getCmp mapC

随机推荐

  • 带有特定乳胶模板的 bookdown

    我非常相信 Rmarkdown 和 bookdown 是内容出版的未来 但是一些出版商使用特定的 LaTeX 模板 并且为了提交手稿 他们需要在该精确的模板中使用它 例如 请参阅此施普林格手稿模板 http resource cms spr
  • 如何在面板上预览顶部停靠控件下方插入顶部停靠控件

    我使用 panel controls add 将控件添加到面板 但是 他们插入到它的最顶部 我尝试了 BringToFront 和 SendToBack 方法 但似乎不起作用 有任何想法吗 谢谢 EDIT 我想要的是 它们停靠在容器的顶部
  • 如何将多个 QualifierFilter 应用于 HBase 中的一行

    我们想使用两个 QualifierFilters 过滤 HBase 表上的扫描 意味着我们只想获取表中确实具有特定列 col A 的行AND 某个其他列 col B 我们当前的方法如下所示 FilterList filterList new
  • div 的边框半径问题

    I have a CSS flexbox with a div set on the HTML canvas I want to have a border radius around all four corners I have tri
  • 使用 JavaScript 映射和减少 JSON 对象

    考虑下面这个 JSON 对象 cells count 1 gdp growth avg 1 90575802503285 geo name united states of america time 1990 count 1 gdp gro
  • 使用replace()方法执行FragmentTransaction后,findFragmentByTag()返回null

    我的 Android 应用程序包含三个片段 A B 和 C 它们被加载到定义的两个容器中MainActivity布局 当应用程序启动时 它会显示fragmentA 加载到 left container 中和right container中的
  • 在 Linux 上使用 PyAudio 列出设备

    在 Linux 上列出音频设备时 我尝试使用 Raspbian RaspberryPi import pyaudio p pyaudio PyAudio for i in range p get device count print p g
  • 关于C中数组名和数组地址

    我有以下代码 include
  • 从 Reddit 评论中删除链接

    我正在阅读 reddit 帖子下的评论 有些评论带有链接 我想删除它们 示例 输入 This is a pic https i imgur com yKmUMJD jpg this http www google com is a link
  • 去审查:“复合文字使用无键字段”和嵌入类型

    我有一个简单的结构 type MyWriter struct io Writer 然后我按以下方式使用它 writer MyWriter io Stdout 跑步时go vet这给了我一个composite literal uses unk
  • Laravel 组管理路由

    有没有一种方法可以将所有以admin 我尝试过这样的事情 但它当然不起作用 Route group admin function Route get something array uses gt mycontroller index Ro
  • Android HTTP 调用的随机异常。为什么?

    到目前为止 我正在 3 台设备上测试我的应用程序 Sprint 的 LG Optimus 设备在 https 调用上不会抛出异常 可能一周一次 T Mobile 上的 Nexus S 几乎每小时都会出现这样的内容 读取错误 ssl 0x3f
  • 如何使用 React Native 检测屏幕解锁?

    有谁知道我可以检测用户何时打开手机的方法吗 据我了解 当设备解锁时 例如输入正确的密码 android intent USER PRESENT 会被广播 但是 我不知道如何使用 React Native 来检测广播 有没有人有办法解决吗 调
  • 增加Python中cProfiler的深度以报告更多功能?

    我正在尝试分析一个调用其他函数的函数 我按如下方式调用分析器 from mymodule import foo def start foo import cProfile as profile profile run start outpu
  • 使用着色器创建模糊过滤器 - 从片段着色器访问相邻像素?

    我想使用 OpenGL ES 2 0 中的片段着色器创建模糊效果 我感兴趣的算法只是一个平均模糊 将所有相邻像素添加到我自己中并除以 9 进行标准化 但是我有两个问题 1 这是否需要我首先渲染到帧缓冲区 然后切换渲染目标 或者有更简单的方法
  • 在 Java 中过滤组合框数据

    在java中 假设有两个jpanel 当我单击Panle 1 上的按钮 A 时 它将显示面板 2 在面板 2 中 有两个组合框 我完成了所有必要的编码 但要过滤的一件事是组合框 1 将仅显示那些具有 book 前缀的数据 组合框 2 将仅显
  • Hibernate 对象相等性检查[重复]

    这个问题在这里已经有答案了 可能的重复 Hibernate 具有相同标识符值的不同对象已与会话关联 https stackoverflow com questions 3553200 hibernate different object w
  • 如何管理 Workflow Foundation 中的版本?

    当您有长时间运行的工作流并且持久性存储中可能同时有两个或三个版本并且必须能够访问所有版本时 如何管理 WF 中的工作流版本 我撰写了一系列 4 篇博客文章 涵盖了对长期运行的工作流程进行版本控制时需要注意的大部分内容 我倾向于避免的一件事是
  • 在设备上打印视图层次结构

    在我无法实际访问的三星手机上调试我的应用程序 结果出现奇怪的结果 我想要求用户运行一个已检测的应用程序来帮助调试 我的应用程序获得view其中有一个未知的 对我来说 层次结构 ViewGroupsETC 有没有办法 走路 View并打印出一
  • sencha列表分页插件

    我正在尝试使用 sencha touch 的列表分页插件 但几乎没有关于如何使用它的好 或坏 文档 我很困惑 当我激活列表中的插件时 this myList new Ext List store this myStore plugins p