簡體   English   中英

使用Ext JS Designer從XmlStore填充組合

[英]Populating combo from XmlStore with Ext js designer

我正在嘗試使用來自Xml文件的數據加載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);
    }
});

一定很簡單,但是我被困住了...

這不會做任何事情:

store: 'cteo',

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

store: cteo,

或者,您可以調用Ext.StoreMgr.lookup('cteo') ,但是從您的代碼來看,我認為變量引用是您的意圖。

對您的代碼發表評論。 這樣做:

cteo = Ext.extend(Ext.data.XmlStore, {
...
cteo();

...有點奇怪,並且很可能在窗口范圍內創建了一個全局變量(假設cteo在更早的位置未定義為var)。 將其視為定義自定義類,然后創建您定義的類的新實例。 另外,考慮一下您的命名-商店子類應該是商店的特定類型,這在名稱中應該顯而易見。 通常,您的代碼應如下所示:

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)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM