填充Label的值

时间:2012-07-08 14:20:21

标签: extjs extjs4 extjs-mvc extjs4.1

我正在使用MVC架构(我已经浏览了MVC上的文档,但我仍然在这里丢失)并且我需要知道如何将记录填充到我的Label上。我知道我必须通过商店完成这项工作。

我已经从商店加载了值,但由于某种原因无法在我的面板上显示它。这是我的代码;

大多数示例/书籍演示了如何在网格中显示,但不是标签(我知道它必须是相同的逻辑,但我迷失了)。它显示了如何写入DB / JSON文件而不显示值。

我需要在Label文本中显示COUNTRYNAME。这是我正在做的一个示例代码,可以帮助我吗?

Ext.define ('ProjectDisplayExample.model.Country',{
    extend: 'Ext.data.Model',
    //
    fields:['countryid','countryname']
    //
});

STORE

Ext.define('ProjectDisplayExample.store.Country',{
    extend:'Ext.data.Store',
    model:'ProjectDisplayExample.model.Country',
    remoteGroup:true,
    proxy: {
        actionMethods : {
            read   : 'POST',
        },
        type: 'ajax',
        url : '/server/country.php'
    }   
});

查看

Ext.define('ProjectDisplayExample.view.CountryWindow', {
    extend: 'Ext.window.Window',
    alias: 'widget.countrywindow',
    ...........

    initComponent: function() {
        var st = Ext.getStore('Country');
        st.load();
        this.items = [
        {
            items: [
            {
                xtype: 'panel',
                region: 'north',
                items: [{
                    xtype: 'label',
                    // NEED TO DISPLAY COUNTRT NAME FROM THE STORE HERE
                }]
            }]
}

更新

var store = ... // Your store
store.on('load', function() {
    // here store is loaded and you can do anything you want with it
    console.log('store is loaded. number of records = ', store.getCount());
}, this, { single: true });

store.load; // I ADDED THIS LINE.................... <---------

更新2

this.items = [
            {
                items: [
                {
                    xtype: 'panel',
                    region: 'north',
                    items: [{
                        xtype: 'label',
                        name : f
                    }]
                }]

1 个答案:

答案 0 :(得分:3)

我不会发布代码示例来准确解决您的问题,但我会给您几点意见:

  • 商店包含数组或记录。所以你不能只从商店说give me country name。您首先需要获取记录,例如:var r = store.getAt(0),然后才能获得countyname字段var f = r.get('countryname')

  • Load()方法是异步的,因此您可以在代码中的某个位置执行它,并假设对于下一行,您的商店已准备就绪。您需要订阅load事件,例如:

    var store = ... // Your store
    store.on('load', function() {
        // here store is loaded and you can do anything you want with it
        console.log('store is loaded. number of records = ', store.getCount());
    }, this, { single: true });
    store.load();
    
  • xtype: label中的标签在ExtJ中实际上很少使用。您究竟想要在该面板中显示什么?但无论如何......在您从商店中获取数据后,您可以使用update()setValue()或任何其他方法来更新组件。

希望这会有所帮助......