【问题标题】:Accessing data from a Store in ExtJS?在 ExtJS 中从 Store 访问数据?
【发布时间】: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 是异步的,但数据是硬编码的;为什么将数据加载到存储中会有延迟?如何修复此代码,以便当我第一次在浏览器上导航到应用程序时,上述两个日志显示正确的信息?

【问题讨论】:

    标签: javascript model-view-controller extjs model store


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多