2012-09-27 42 views
1

我正在開發一個Extjs應用程序。 這裏是我的控制器之一EXTJS控制器視圖自動生成的獲取器

Ext.define('ACP.controller.CodeTabs', { 
extend: 'Ext.app.Controller', 

/* 
views: [ 
    'CodeTabs' 
], 
*/ 

refs: [ 
    { 
     ref: 'codetabs', 
     selector: 'codetabs', 
    } 
], 

init: function() { 
    this.application.on({ 
     addtab: this.addTab, 
     closetab: this.closeTab, 
    }); 
}, 

addTab: function() { 
    var tabs = this.getCodetabs(); 
    tabs.add(
     { 
      title: 'New tab', 
      iconCls: 'tabs', 
      html: 'VICTORY', 
     } 
    ).show(); 
}, 

closeTab: function() { 
    alert("closetab"); 
}, 
}); 

的這裏是相關的觀點:

Ext.define('ACP.view.CodeTabs', { 
extend: 'Ext.tab.Panel', 
alias: 'widget.codetabs', 
layout: 'fit', 
items: [ 
    { 
     title: 'Test', 
     html: 'HELLO ASLAN' 
    } 
], 
}); 

的問題是,吸氣this.getCodetabs()是不確定的。它不應該由refs自動生成嗎?我究竟做錯了什麼 ?

這是我的申請:http://atomcodepad.com/acp 你可以嘗試點擊「addtab」按鈕來查看我的問題發生。

回答

2

您處於應用程序範圍內,而不是定義ref的Controller。使用getController(name)方法獲取對控制器的引用,從那裏定義您的getter。

+0

我糾正它這樣: ... \t addTab:函數(){ \t \t VAR選項卡= this.getController( 'CodeTabs')getCodetabs(); \t \t tabs.add( \t \t \t { \t \t \t \t標題: '新標籤', \t \t \t \t iconCls: '標籤', \t \t \t \t HTML: '勝利', \t \t \t } \t \t).show(); \t}, ... 這是正確的方法嗎? 在Extjs文檔中,我在調用getter之前沒有看到對控制器的單個引用。 無論如何,現在它的作品,非常感謝你! – FWoelffel