javascript - 如何使 Ext JS 4 模型关联使用现有商店而不是创建自己的商店?

标签 javascript extjs model extjs4

我设置了以下模型(简化):

Ext.define('UserGroup', {
    extend: 'Ext.data.Model',
    fields: ['GroupID', 'UserID'],
    idProperty: '',
    associations: [{
        type: 'belongsTo',
        model: 'User',
        primaryKey: 'UserID',
        foreignKey: 'UserID',
        name: 'users'
    }]
)};

Ext.define('User', {
    extend: 'Ext.data.Model',
    idProperty: 'UserID',
    associations: [{
        type: 'hasMany',
        model: 'UserGroup',
        primaryKey: 'UserID',
        foreignKey: 'UserID',
        name: 'userGroups'
    }]
});

我已经为每个模型加载了现有商店,以及大量相关数据。 当我尝试从 User 访问 UserGroup 关联时,我没有收到任何数据。

Ext.getStore('User').getAt(12).userGroups().count(); // returns 0

我知道这是因为协会正在创建自己的商店。到目前为止,我只能通过

获取适当关联的数据
Ext.getStore('User').getAt(12).userGroups().load();

它调用服务器来获取该信息,但随后我必须使用回调并等待响应。

那么,如何为 userGroups 关联指定要使用的存储,这样它就不会从服务器请求数据?

最佳答案

Afaik,有两种可能的解决方案:

  1. 覆盖Ext.data.HasManyAssociation.createStore
  2. 将数据从原始存储传递到Ext.data.HasManyAssociation.storeConfig :

    Ext.define('User', {
        extend: 'Ext.data.Model',
        idProperty: 'UserID',
        associations: [{
            type: 'hasMany',
            storeConfig: {
              data: originalStore.getRange()
            },
            // ...
        }]
    });
    

关于javascript - 如何使 Ext JS 4 模型关联使用现有商店而不是创建自己的商店?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8053287/

相关文章:

javascript - 如何用jquery制作滑动切换?

javascript - 如何显示使用相同 html 输入类型=文件选择的视频和图像的预览

javascript - Sencha ExtJS Json 转换

sorting - 如何对 EXTJS 中的日期列进行排序

python - 如何在 Django 中定义跨年、月的日期范围?

c# - 当一切看起来都很好时,为什么我的 MVC 应用程序中的 ModelState.IsValid 属性等于 false

javascript - Node 要求()与 es6 导入 : why doesn't this example work

javascript - @ 符号在 javascript 导入中起什么作用?

extjs:加载时如何设置组合框的值

ruby-on-rails - 在模型中使用辅助方法