gpt4 book ai didi

javascript - 使用extjs显示同一模型的不同 View

转载 作者:行者123 更新时间:2023-11-28 09:17:06 25 4
gpt4 key购买 nike

我尝试使用ExtJS来显示同一模型的不同 View (每个 View 显示模型的一个子集)。

我有一个加载以下 xml 的嵌套模型:

<results>
<hitcount>1234</hitcount>
<recommended>
<title>foo</title>
</recommended>
<result>
<title>title1</title>
<author>author1</author>
</result>
<result>
<title>title2</title>
<author>author2</author>
</result>
</results>

我想要不同的小部件,每个小部件都显示该模型的一部分(一个列表显示“结果”,另一个列表显示“推荐”,另一个小部件显示点击计数)。

我不知道如何在每个小部件上声明存储以仅针对完整模型的子集。

听起来像是一种基本方法,但我找不到这样的示例(我找到了许多嵌套结构的示例,但没有一个存储范围仅限于模型的子集)。

请参阅下面的一些尝试,我尝试仅获取结果部分。

Ext.define("MySenchaApp.model.ResultModel", {
extend:"Ext.data.Model",

config:{
associations: [
{
type:'hasMany',
model:'MySenchaApp.model.Result',
name:'results',
associationKey:'result'
}
],


proxy:{

type:"ajax",
url:'Results.xml',

reader:{
type:'xml',
rootProperty:'results'
}
}
}
});

Ext.define("MySenchaApp.model.Result", {
extend:"Ext.data.Model",

config:{
fields:['title', 'author'],
belongsTo: 'MySenchaApp.model.ResultModel'
}
});

Ext.define('MySenchaApp.view.Results', {
extend:'Ext.navigation.View',
xtype:'blog',


config:{
title:'Results',
items: [
{
xtype:'list',
itemTpl:'<b>{title}</b> - by <i>{author}</i>',

store:{
autoLoad:true,
model:'MySenchaApp.model.Result' // ??
}
}
]
}
});

最佳答案

您无法提供关联存储作为配置,因为它们从来都不是单例。

说明

考虑以下示例:

Ext.define('User', {
extend: 'Ext.data.Model',
fields: [
{name: 'id', type: 'int'},
{name: 'name', type: 'string'}
],
hasMany: {model: 'Product', name: 'products'}
});

现在,有些人希望拥有一个用户商店,每个用户都有自己的产品关联,这是完全有道理的。因此,如果 aUser1aUser2 是存储在用户存储中的两条用户记录,则执行以下操作是完全合法的:

aUser1.products().add( ... );
aUser2.products().add( ... );

重点是,对于关联,不存在单例存储之类的东西 - 每个记录都有一个存储。

您的 XML 建议不能有超过 1 个结果,在这种情况下您不应该真正使用关联。您应该按照以下方式做一些事情:

Ext.define("MySenchaApp.model.Results", {
extend:"Ext.data.Model",

fields:['title', 'author'],

proxy:{

type:"ajax",
url:'Results.xml',

reader:{
type:'xml',
rootProperty:'results'
}
}

});

并提供以下 XML:

<metadata>
<hitcount>1234</hitcount>
<recommended>
<title>foo</title>
</recommended>
</metadata>
<results>
<result>
<title>title1</title>
<author>author1</author>
</result>
<result>
<title>title2</title>
<author>author2</author>
</result>
</results>

使用代理的metachange事件来检查命中计数和推荐。

关于javascript - 使用extjs显示同一模型的不同 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15520887/

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