gpt4 book ai didi

javascript - ExtJS 6 : load nested data by creating new instance of model

转载 作者:行者123 更新时间:2023-11-30 15:55:49 24 4
gpt4 key购买 nike

我尝试创建一个带有 hasMany 关联的模型,但是当我尝试访问商店时,它是空的。

这是我的模型:

基础模型:

Ext.define( 'Test.model.schema.BaseModel', {
extend: 'Ext.data.Model',

schema: {
namespace: 'Test.model'
}
} );

用户模型:

Ext.define('Test.model.user.UserModel', {
extend: 'Ext.data.Model',

fields: [
{
name: 'displayName',
type: 'string'
}
],

hasMany: [
{
name: 'roles',
model: 'user.RoleModel', // also try with Test.model.user.RoleModel
associationKey: 'roles'
}
]
});

Angular 色模型:

Ext.define('Test.model.user.RoleModel', {
extend: 'Ext.data.Model',

fields: [
{
name: 'label',
type: 'string'
}
]
});

这是我的申请:

Ext.application({
name: 'Test',

models : [
'Test.model.schema.BaseModel',
'Test.model.user.RoleModel',
'Test.model.user.UserModel'
],

appFolder : contextPath + '/' + staticsPath + '/js/app',

controllers : ['router.TestRouterController'],

defaultToken : 'auth'
});

在我的 Controller 中,我尝试像这样创建我的用户模型:

var user = Ext.create('Test.model.user.UserModel', {
displayName : 'Mick P.',
roles : [
{
label: 'test'
}
]
});

与 JSON 相同。

当我执行 user.roles().getAt(0) 时,我得到了 nulluser.roles().data.items是空的。

你看到我做错了什么了吗?

编辑 1: 我的问题的 fiddle :https://fiddle.sencha.com/#fiddle/1e54

编辑 2: 如果我用内存存储加载我的数据,它就会工作。但为什么不直接加载模型。

最佳答案

Sencha 支持向我发送回复。也许你们中的一些人需要答案。

首先您需要阅读此文档页面:http://docs.sencha.com/extjs/6.0.2-classic/Ext.data.reader.Reader.html

当您将数据直接传递到模型构造函数时,它不会通过配置的读取器传递,只会评估基本字段。

数据确实需要通过 Reader。

如果您不想创建商店:

1 - 你需要在模型中声明代理

2 - 要使用嵌套数据创建模型,您必须执行类似的操作:

UserModel.getProxy().getReader().read(raw);

如果您需要 fiddle 示例,请告诉我。

- 迈克尔

关于javascript - ExtJS 6 : load nested data by creating new instance of model,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38564623/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com