首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Ext js designer从XmlStore填充组合

使用Ext js designer从XmlStore填充组合
EN

Stack Overflow用户
提问于 2010-07-30 22:29:44
回答 2查看 2K关注 0票数 0

我正在尝试使用从Xml文件加载数据的简单(noob) Combo检查。下面是我的xml:

代码语言:javascript
复制
<?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的代码:

代码语言:javascript
复制
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();

最后,这是这个组合的代码:

代码语言:javascript
复制
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);
    }
});

它一定是简单的东西,但我被卡住了.

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-08-02 07:19:44

在sencha站点查看此帖子:

http://www.sencha.com/forum/showthread.php?105818-(noob)-Populating-combo-from-XmlStore-with-Ext-js-designer

票数 0
EN

Stack Overflow用户

发布于 2010-07-31 12:22:47

这不会做任何事情:

代码语言:javascript
复制
store: 'cteo',

您需要传入之前分配的对象引用,而不是字符串:

代码语言:javascript
复制
store: cteo,

或者,您也可以调用Ext.StoreMgr.lookup('cteo'),但根据您的代码判断,我假定变量引用是您的意图。

关于您的代码的一条注释。执行此操作:

代码语言:javascript
复制
cteo = Ext.extend(Ext.data.XmlStore, {
...
cteo();

...is有点奇怪,很可能是在窗口范围内创建了一个全局变量(假设之前没有在某个地方将cteo定义为var )。可以将其视为定义一个自定义类,然后创建您定义的类的一个新实例。另外,考虑一下您的命名-- store子类应该是一种特定类型的store,这在名称中应该很明显。通常,您的代码应该看起来像这样:

代码语言:javascript
复制
Ext.ns('MyNamespace');

MyNamespace.CteoStore = Ext.extend(Ext.data.XmlStore, {
...
});
var cteoStore = new CteoStore();

哦对了还有一件事。您不需要为了提供默认配置的唯一目的而重写构造函数。只需执行以下操作:

代码语言:javascript
复制
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一样)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3372437

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档