2012-10-12 104 views
0

我希望關閉按鈕是可重用的,所以我創建了自己的類,以便我可以將它附加到需要它的視圖。我想只能將附加到視圖的視圖傳遞給控制器​​來關閉該視圖。它應該是相當簡單的,我會懷疑這是多少,但我無法讓它正常工作。我得到它關閉視圖,但得到錯誤 未捕獲TypeError:無法讀取屬性'dom'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很陌生,所以我可能會做很多事情我做錯了,所以我非常感謝幫助。

我忘了提,關閉標籤面板後,我不能再沒有令人耳目一新,再次我敢肯定,打開它是由於不被破壞

+1

嘗試使用類似curView.destroy()的銷燬方法; – blessenm

+0

@blessenm感謝您的迴應,但這也不起作用。我得到這個錯誤 – codeMagic

+0

'對象[對象窗口]沒有方法'銷燬''''''屬性是假設銷燬代碼中的視圖,我有,所以我認爲我沒有按鈕正確傳遞視圖是我需要了解如何去做的 – codeMagic

回答

0

看來,這個問題是使用視圖ID的。我以爲我拿走了他們,但我猜不是。我把id拿出來並使用別名,並讓它工作。我仍然沒有搞清楚如何通過附加到按鈕的視圖,但現在

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

正在工作。真正的屬性告訴它在刪除視圖後摧毀視圖。