【问题标题】:How to access nested models from store in ExtJs 4如何从 ExtJs 4 中的商店访问嵌套模型
【发布时间】:2011-04-27 14:58:24
【问题描述】:

我刚刚下载了 ExtJs 4 的最终版本,我正在尝试使用新的模型方法来实现一些东西。

例如,我有一个名为 SetupModel 的模型,它有 2 个嵌套模型用户、报告。 我创建新商店并设置商店的模型属性 = SetupModel。

问题是 - 在将数据加载到商店后如何访问我的嵌套属性?

我需要类似 myStore.data.Users() 的东西,但不正确。

有什么想法吗?

【问题讨论】:

    标签: extjs extjs4


    【解决方案1】:

    定义模型时,您需要提供与嵌套模型的必要关联。因为,你没有提供你的代码。这是一个例子:

    我的产品型号:

    Product = Ext.define('Product',{
        extend: 'Ext.data.Model',
        fields: [
            {name: 'id', type: 'int'},
            {name: 'user_id', type: 'int'},
            {name: 'name', type: 'string'},
            {name: 'price', type: 'float'}
        ],
        proxy: {
            type: 'localstorage',
            id: 'products'
        }
    });
    

    我的用户模型:

    User = Ext.define('User',{
        extend: 'Ext.data.Model',
        fields: [
            {name: 'id',       type: 'int'},
            {name: 'name',     type: 'string'},
            {name: 'gender',   type: 'string'},
            {name: 'username', type: 'string'}
        ],
        associations: [
            {type: 'hasMany', model: 'Product', name: 'products'}
        ],
        proxy: {
            type: 'localstorage',
            id  : 'users'
        }
    });
    

    现在,如果您有一个带有产品的用户模型实例。以下是访问产品的方法:

    var productStore = user.products();
    

    请注意,user.products() 返回一个 Ext.data.Store。现在,您可以遍历或过滤或查找您的产品记录。以下是我获得第一个产品名称的方式:

    productStore.getAt(0).get('name');
    

    【讨论】:

    • 亲爱的 Abdel,如果我们想在没有来自服务器的第二次请求的情况下制作一个嵌套的网格面板,用这种方法可以吗?
    • 您好 Oğuz Çelikdemir,不确定您需要它是否需要扩展行或其他内容?
    • @Ogur 您可以在一个 json 中获取嵌套数据,并在 hasMany 定义中为您的关联指定“关联键”。
    猜你喜欢
    • 1970-01-01
    • 2011-08-28
    • 1970-01-01
    • 2011-11-18
    • 2012-05-28
    • 2013-11-20
    • 2021-10-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多