在 ExtJS 中从 Store 访问数据?

Posted

技术标签:

【中文标题】在 ExtJS 中从 Store 访问数据?【英文标题】:Accessing data from a Store in ExtJS? 【发布时间】:2017-02-02 12:47:20 【问题描述】:

所以我有以下代码:

模型:

Ext.define('Sandbox.model.User', 
    extend: 'Ext.data.Model',
    fields: [
         name: 'Name', type: 'string' ,
         name: 'Email', type: 'string' ,
         name: 'TelNumber', type: 'string' ,
         name: 'Role', type: 'string' 
    ]
);

商店

Ext.define("Sandbox.store.Users", 
    extend : 'Ext.data.Store',
    model : 'Sandbox.model.User'
);

我有以下 Application.js 将数据加载到商店:

Ext.define('Sandbox.Application', 
    extend: 'Ext.app.Application',

    name: 'Sandbox',

    stores: [
        'Users'
    ],

    launch: function () 

        var userStore = Ext.getStore('Users');
        userStore.add(
            [
                
                    Name : 'John',
                    Email: 'john@gmail.com',
                    TelNumber : ' 0330 122 2800',
                    Role : 'Administrator'
                ,
                
                    Name : 'Sarah',
                    Email : 'sarah@hotmail.com',
                    TelNumber: ' 0330 122 2800',
                    Role : 'Customer'
                ,
                
                    Name : 'Brian',
                    Email : 'brian@aol.com',
                    TelNumber: ' 0330 122 2800',
                    Role : 'Supplier'
                ,
                
                    Name : 'Karen',
                    Email : 'karen@gmail.com',
                    TelNumber: ' 0330 122 2800',
                    Role : 'Administrator'
                
           ]
         );

         var userStore = Ext.getStore('Users');
         console.log("Store size " + userStore.getCount());

         console.log("Person #1: " + userStore.getAt(0).Name);
    
);

应用程序启动时,会记录正确的存储大小(4)。但是索引 0 处特定数据的第二个日志返回值未定义。我知道 ExtJS 是异步的,但数据是硬编码的;为什么将数据加载到存储中会有延迟?如何修复此代码,以便当我第一次在浏览器上导航到应用程序时,上述两个日志显示正确的信息?

【问题讨论】:

【参考方案1】:

您不能直接访问该属性。你应该使用:

userStore.getAt(0).get("Name")

编辑:您的代码没有其他问题,问题只是语法。 “ExtJS 是异步的”是一个很大的误解,因为它只是一个 js 库,不能异步。您编码的方式可以是,而您的示例中没有。您手动将数据添加到您的商店。

【讨论】:

以上是关于在 ExtJS 中从 Store 访问数据?的主要内容,如果未能解决你的问题,请参考以下文章

通量操作可以访问存储吗?

Extjs中如何动态加载'Ext.tree.Panel'树当中的各个节点

ExtJS 的 store 将所有数据保存在哪里

extjs 嵌套 json

store.load 后的 Extjs 网格选择有不正确的数据

在 Combobox Extjs 4 中从数组和 bindStore 创建存储数据