0

我希望关闭按钮是可重用的,所以我创建了自己的类,这样我就可以将它附加到需要它的视图上。我只想能够将附加到视图的视图传递给控制器​​以关闭该视图。它应该相当简单,我怀疑这是多少人这样做,但我无法让它正常工作。我让它关闭视图但得到错误 Uncaught TypeError: Cannot read property 'dom' of null 我理解这通常意味着视图没有被破坏,但我认为这告诉它破坏视图:

Ext.Viewport.remove(curView, true);

这是我认为相关的代码控制器:

closeView: function(btn, e,opts){             
            var curView = btn.getParent().getParent();
           console.log('From btn: ' + curView + ',' + opts);             
           Ext.Viewport.remove(curView, true);}

看法:

Ext.define('SenchaFirstApp.view.DetailView',{
      extend: 'Ext.tab.Panel',
      requires: ['Ext.Toolbar', 'Ext.tab.Panel', 'Ext.form.FieldSet', 'Ext.field.Select'],
      model: ['SenchaFirstApp.model.Details', 'SenchaFirstApp.model.SiteInfo'],
      alias: 'widget.detailview',
//      xtype: 'tabpanel',


    config:
    {
          scrollable: true,
          width: 1500,
          height: 800,
    //      fullscreen: true,
          layout: {type: 'card', animation:{type: 'flip'}},
          centered: true,
          border: 10,
          tabBar: {
              docked: 'top',
          }, 
          formParams: {
        },
      items: 
      [
       {
         //Tab bar 
         xtype:  'tbar',
         title: 'Details View',
             items: [
            {
              xtype: 'closebtn',
              id: 'detailsBtn',
              sourceForm: this
            }]
        },
        {
            title: 'Equipment Monitor',        //first tab
            xtype: 'monitor',
        },                        
        {
            title: 'Site Information',            //second tab
            xtype: 'siteinfo',
        }
    ]                    
} //End Config

我试着用

Ext.Viewport.remove(Ext.Viewport.getActiveItem, true)

但这也没有用。我怀疑这可能与我创建该视图的方式有关。我是 Sencha 的新手,所以我可能做错了很多事情,所以我很感激帮助。

我忘了提一下,关闭选项卡面板后,如果不刷新就无法再次打开它,我再次确定这是由于视图没有被破坏

4

1 回答 1

0

看来问题出在使用 id 上。我以为我把它们拿出来了,但我想没有。我取出 id 并使用别名并让它工作。我仍然不知道如何传递附加到按钮的视图,但现在

Ext.Viewport.remove(Ext.Viewport.getActiveItem, true)

正在工作中。true 属性告诉它在删除视图后销毁视图。

于 2012-10-15T17:52:15.753 回答