Sencha离线代理

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Sencha离线代理相关的知识,希望对你有一定的参考价值。

面对Sencha离线代理问题,当json收到100条记录离线代理时只添加50条记录添加到商店这里是我的简单代码response.responseText [my ajax response],它返回reocords set

           var data = Ext.decode(response.responseText);
              for (var c=0; c < data.length; c++){
                   console.log(c);
                    var itemrecord  = Ext.create('Inertia.model.InstallingCompany');
                    itemrecord.set(data[c]);
                    Ext.getStore('InstallingCompanies-offline').add(itemrecord);
               }
            console.log(c);
            console.log(Ext.getStore('InstallingCompanies-offline').data.length);
答案

为此你可以使用store.loadData()的直接store方法。

在这个FIDDLE中,我使用gridpanelExt.data.Store创建了一个演示。我希望这个FIDDLE能够帮助您或指导您实现您的要求。

代码片段

 Ext.define('ForumThread', {
     extend: 'Ext.data.Model',
     fields: [
         'title', 'forumtitle', 'forumid', 'username', {
             name: 'replycount',
             type: 'int'
         }, {
             name: 'lastpost',
             mapping: 'lastpost',
             type: 'date',
             dateFormat: 'timestamp'
         },
         'lastposter', 'excerpt', 'threadid'
     ],
     idProperty: 'threadid'
 });

 Ext.create('Ext.data.Store', {
     storeId: 'topicsStore',
     model: 'ForumThread'
 });

 function renderTopic(value, p, record) {
     return Ext.String.format(
         '<a href="http://sencha.com/forum/showthread.php?t={2}" target="_blank">{0}</a>',
         value,
         record.data.forumtitle,
         record.getId(),
         record.data.forumid
     );
 }

 Ext.create('Ext.grid.Panel', {
     height: window.innerHeight,
     title: 'Example of Store loadData() with GRID and Ajax Request',
     renderTo: Ext.getBody(),
     store: Ext.data.StoreManager.lookup('topicsStore'),
     loadMask: true,
     columns: [{
         xtype: 'rownumberer',
         width: 35,
         sortable: false
     }, {
         tdCls: 'x-grid-cell-topic',
         text: "Topic",
         dataIndex: 'title',
         flex: 1,
         renderer: renderTopic,
         sortable: true,
         groupable: false,
         cellWrap: true
     }, {
         text: "Author",
         dataIndex: 'username',
         flex: 0.5,
         sortable: true,
         groupable: false
     }, {
         text: "Replies",
         dataIndex: 'replycount',
         align: 'center',
         width: 90,
         sortable: false
     }, {
         id: 'last',
         text: "Last Post",
         dataIndex: 'lastpost',
         flex: 0.5,
         renderer: Ext.util.Format.dateRenderer('n/j/Y g:i A'),
         sortable: true,
         groupable: false
     }],
     listeners: {
         afterrender: function (cmp) {
             var store = Ext.data.StoreManager.lookup('topicsStore'),
                 store1;
             cmp.getEl().mask('Please wait..!');
             Ext.Ajax.request({
                 url: 'topics.json',
                 success: function (data) {
                     var response = Ext.decode(data.responseText);
                     store.loadData(response.topics);
                     cmp.getEl().unmask();

                     //Add data using store.add() method in Store
                     store1 = Ext.create('Ext.data.Store', {
                         model: 'ForumThread'
                     });
                     response.topics.forEach(function (item) {
                         store1.add(item);
                     })
                     console.log(`total count of store1 data is ${store1.getCount()}`);
                 }
             });
         }
     }
 });

以上是关于Sencha离线代理的主要内容,如果未能解决你的问题,请参考以下文章

Sencha Touch中的离线地图

如何在 Sencha Touch 中的商店之间同步

从 localStorage 获取值以在 Sencha Touch AJAX 代理中使用

如何使用 HTML 5 Web 应用程序在 iPad 上离线播放视频(使用 Sencha touch 或其他方式)

Sencha-Touch:未捕获的类型错误:无法读取未定义的属性“代理”

Jsonp代理示例,发送请求到我们自己的站点而不是sencha站点