2011-01-10 12 views
0

次のコードを呼び出そうとしています: Ext.namespace( "menu");Ext JSスコープの問題

 var a = menu.menuItems(); 
      var accordion = new Ext.Panel({ 
      title:'Options', 
      region:'west', 
      margins:'5 0 5 5', 
      split:true, 
      width: 210, 
      collapsible: true, 
      layout:'accordion', 
      items: [a] 
     }); 

から

menu.menuItems = function(){ 
var menuItems= [{ 
      0 : new Ext.Panel({ 
       title: 'Ordering'}) 

ただし、Aはスコープの外のようですか?しかし、私は多くのエクステンションパネルを渡しているので、私は混乱しています、確かにextはパネルを受け入れますか?

答えて

1

あなたのmenuItemsコードを変更しました:この関数は何も返していませんでした。それは実際にパネルの配列を作成していませんでした。番号付きのキーにパネルを持つオブジェクトの配列を作成していました。

あなたのアコーディオンコードを変更しました。アコーディオンのアイテム設定にmenuItemを追加した場所にネストされた余分な配列がありました。 JSBinで

Ext.namespace("menu"); 
    menu.menuItems = function(){ 
    var menuItems= [ 
     new Ext.Panel({ 
     title: 'Ordering' 
     }) 
    ]; 

    return menuItems; 
    }; 

    var a = menu.menuItems(); 
    var accordion = new Ext.Panel({ 
    title:'Options', 
    region:'west', 
    margins:'5 0 5 5', 
    split:true, 
    width: 210, 
    collapsible: true, 
    layout:'accordion', 
    items: a 
    }); 

DEMO:http://jsbin.com/oyata4/edit