我正在尝试使用从Xml文件加载数据的简单(noob) Combo检查。下面是我的xml:
<?xml version="1.0" encoding="UTF-8"?>
<accounts>
<account>
<name>Savings Account</name>
<id>1</id>
</account>
<account>
<name>Current Account</name>
<id>2</id>
</account>
</accounts>当我配置并添加XmlStore时,它报告发现2条记录。
下面是XmlStore的代码:
cteo = Ext.extend(Ext.data.XmlStore, {
constructor: function(cfg) {
cfg = cfg || {};
cteo.superclass.constructor.call(this, Ext.apply({
storeId: 'cteo',
url: 'cteo.xml',
record: 'account',
data: '',
fields: [
{
name: 'name',
mapping: 'name'
},
{
name: 'id',
mapping: 'name'
}
]
}, cfg));
}
});
new cteo();最后,这是这个组合的代码:
MyPanelUi = Ext.extend(Ext.Panel, {
title: 'My Panel',
width: 400,
height: 250,
initComponent: function() {
this.items = [
{
xtype: 'label',
text: 'Cuenta Origen'
},
{
xtype: 'combo',
store: 'cteo',
displayField: 'name',
valueField: 'id'
}
];
MyPanelUi.superclass.initComponent.call(this);
}
});它一定是简单的东西,但我被卡住了.
发布于 2010-08-02 07:19:44
在sencha站点查看此帖子:
http://www.sencha.com/forum/showthread.php?105818-(noob)-Populating-combo-from-XmlStore-with-Ext-js-designer
发布于 2010-07-31 12:22:47
这不会做任何事情:
store: 'cteo',您需要传入之前分配的对象引用,而不是字符串:
store: cteo,或者,您也可以调用Ext.StoreMgr.lookup('cteo'),但根据您的代码判断,我假定变量引用是您的意图。
关于您的代码的一条注释。执行此操作:
cteo = Ext.extend(Ext.data.XmlStore, {
...
cteo();...is有点奇怪,很可能是在窗口范围内创建了一个全局变量(假设之前没有在某个地方将cteo定义为var )。可以将其视为定义一个自定义类,然后创建您定义的类的一个新实例。另外,考虑一下您的命名-- store子类应该是一种特定类型的store,这在名称中应该很明显。通常,您的代码应该看起来像这样:
Ext.ns('MyNamespace');
MyNamespace.CteoStore = Ext.extend(Ext.data.XmlStore, {
...
});
var cteoStore = new CteoStore();哦对了还有一件事。您不需要为了提供默认配置的唯一目的而重写构造函数。只需执行以下操作:
MyNamespace.CteoStore = Ext.extend(Ext.data.XmlStore, {
storeId: 'cteo',
url: 'cteo.xml',
record: 'account',
data: '',
fields: [
{
name: 'name',
mapping: 'name'
},
{
name: 'id',
mapping: 'name'
}
]
});这也更有用,因为与您的示例不同,这些配置是可覆盖的。这使得它更具可重用性(就像你曾经想给另一个实例分配一个不同的id一样)。
https://stackoverflow.com/questions/3372437
复制相似问题