0

我有一个应用程序,它在 form.Panel 中有一个表单,当用户按下搜索时,它会在 tab.Panel 中显示结果。一切正常,标签第一次正常工作。我有一个按钮,允许用户返回到 form.Panel 并输入不同的信息。用户再次按下搜索,一切正常,但是如果您从初始选项卡更改然后尝试返回它,则不会显示任何内容。我在控制台中没有错误,只是一个带有标签栏的空面板。有人知道这可能发生的任何原因吗?

列表项点击控制器:

     Ext.define('FirstApp.controller.Details', {
     extend: 'Ext.app.Controller',

    config: {
    refs: {
        placesNavView:'placesContainer',


    },
    control: {
        'placesContainer places list':{
            itemtap:function(list,index,target,record){

      var ref = record.get('reference');
     var name = record.get('name');
    console.log(name);
      console.log(ref);

    // Instantiate a "please wait" message
    Ext.Viewport.setMasked({xtype:'loadmask', message:'Please Wait...'});

       var proxy = {
        type:'ajax',
        url:'https://maps.googleapis.com/maps/api/place/details/json?reference='+ref+'&sensor=true&key=',
        reader:{
            type:'json',
            rootProperty:'result'
        }
    }
    Ext.StoreMgr.get('Details').setProxy(proxy);
    Ext.StoreMgr.get('Details').load();

    console.log(proxy);


             Ext.getCmp('placesContainer').push({
         xtype: 'details',
       title: name
          });

       Ext.Viewport.setMasked(false);


            }
        }

    }

  }
  });

更新:

 Ext.define('FirstApp.view.PlacesContainer',{
 extend:'Ext.NavigationView',

 xtype:'placesContainer',
 id:'placesView',

config:{
    title:'Places',
    iconCls:'organize',
    items:[
        {
            xtype:'places'
        }

    ]
   }
  })
4

1 回答 1

0

这可能是因为您硬编码id: placesView,请尝试使用itemId

xtype:'placesContainer',
itemId:'placesView'

为什么要用itemIdover id

当没有可用的对象引用时,itemId 可用作获取对组件的引用的替代方法。不要使用带有 Ext.getCmp 的 id,而是使用带有 Ext.Container.getComponent 的 itemId,它将检索 itemId 或 id。由于 itemId 是容器内部 MixedCollection 的索引,因此 itemId 的范围仅限于容器本地 - 避免与需要唯一 id 的 Ext.ComponentManager 发生潜在冲突。

于 2013-04-12T17:25:37.663 回答