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 に答える