javascript - Sencha touch store - 幻影数据

标签 javascript google-chrome sencha-touch store

我创建了一个像这样的模型

Ext.define('MyApp.model.ContainerDetailsModel', {
extend: 'Ext.data.Model',
alias: 'model.ContainerDetailsModel',
config: {
    fields: [
        {
            name: 'id',
            allowNull: false,
            type: 'string'
        },
        {
            name: 'container_types_id',
            type: 'string'
        }
    ]
  }
});

还有这样的商店

Ext.define('MyApp.store.ContainerDetailsStore', {
extend: 'Ext.data.Store',

requires: [
    'MyApp.model.ContainerDetailsModel'
],

config: {
    model: 'MyApp.model.ContainerDetailsModel',
    storeId: 'ContainerDetailsStore',
    proxy: {
        type: 'ajax',
        enablePagingParams: false,
        url: 'hereIsServiceUrl',
        reader: {
            type: 'json'
        }
    }
}
});

现在,在应用程序的某个地方,我尝试获取一条记录,例如:

var detailsStore = Ext.getStore("ContainerDetailsStore");
detailsStore.load();
var detailsRecord = detailsStore.last();

但它给了我未定义的信息。服务返回的 json 没问题,它在不同的地方使用它作为列表的源。我已经尝试将allowNull更改为true,但是源中没有null id。我尝试将类型设置为“int”,但结果相同。

所以我尝试过

console.log(detailsStore);

结果是这样的(只是重要的值):

Class {
...
loaded: true,
data: Class {
   ...
   all: Array[1] {
       length: 1,
       0: Class {
           container_types_id: "1",
           id: "726",
           ....
       }
   ...
   }
   ...
},
...
}

在同一个地方

 console.log(detailsStore.data);

返回(应该如此):

 Class {
   ...
   all: Array[1] {
       length: 1,
       0: Class {
           container_types_id: "1",
           id: "726",
           ....
       }
   ...
   }

但是(下一行)

console.log(detailsStore.data.all);

返回

 []

它是空数组。当我尝试商店中的任何方法时,它说商店是空的。 我一行接一行地写了 console.log() 行 - 所以可以肯定它们之间不会改变(我也尝试以不同的顺序或组合)。

我的浏览器是 Google Chrome 23.0.1271.97 m 我使用https://extjs.cachefly.net/touch/sencha-touch-2.0.1.1/sencha-touch-all-debug.js中的Sencha

我如何从该商店获取记录?

最佳答案

store.load() 通过配置的代理将数据加载到 Store 中。这使用代理对代理使用的任何存储后端进行异步调用,自动将检索到的实例添加到存储中,并在需要时调用可选回调。但是,该方法会在获取数据之前返回。因此,回调函数用于执行操作存储中新数据的逻辑。 尝试一下,

detailsStore.load({
    callback: function(records, operation, success) {
    var detailsRecord = detailsStore.last();
    },
    scope: this
});

关于javascript - Sencha touch store - 幻影数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14212213/

相关文章:

javascript - 悬停/单击时更改内容

javascript - chrome/firefox- 如何运行 javascript 命令

javascript - 如何防止谷歌浏览器抑制对话框?

javascript - sencha touch 将变量添加到模板/列表/等

Android + Sencha Touch 文字输入重复且难以脱焦

javascript - 将 onKeyDown 事件与 CharCode 结合使用

javascript - 浏览器中的 Bash shell 模拟

javascript - 了解 $.promise 的工作方式类似于 transitionEnd

google-chrome - chrome 扩展 OnMessage

sencha-touch - Sencha touch itemTpl,根据条件不显示一行