【发布时间】:2013-03-21 06:01:23
【问题描述】:
我尝试使用 ExtJS 显示同一模型的不同视图(每个视图显示模型的一个子集)。
我有一个加载以下 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' // ??
}
}
]
}
});
【问题讨论】:
-
如果我理解正确,您不必针对模型的子集。您可以拥有一个包含 100 个字段的模型,但只能在其中一个小部件中使用其中的 3 个。仅仅因为它在模型中并不意味着它必须被使用
-
List 如何猜测我想显示结果而不是“推荐”?
标签: javascript extjs extjs4