2012-09-14 10 views
6

実行時に新しく作成したMenuItemを追加する必要があります。ので、私のコードは、現在のようになります。ExtJS:実行時にMenuインスタンスに新しいMenuItemを追加する

var myMenu = myCmp.query('mymenu')[0]; // retrieve my only Menu object 
var menuItem = Ext.create('Ext.menu.Item', { 
    itemId: 'myItemId', text: 'textGoesHere' 
}); 
myMenu.add(menuItem); 

私は項目を追加するadd methodを使用しています。実行時には何もメニュー項目には何も起こりません。デバッグでは、新しい項目が実際にMenuインスタンスのitems設定に追加されたことが示されます。

ただし、remove methodを使用すると、実行時に機能します。

質問:実行時に新しく追加されたMenuItemショーを作成するにはどうすればいいですか?私は何が欠けていますか?

更新:上記のコードが動作します。私は、最後に作成されたmenuItemを削除して、ロジックを別のパスを引き起こしていた欠陥のswitch文を持っていました。 ;

+0

設定を適用しようとしましたか?多分バグがありますか?基本的には、追加の電話を必要とせずにすぐに使用できます。 – sra

+0

@sra私はそれが箱の外で動くべきであることに同意します。 「*構成だけを適用する」とはどういう意味ですか?ありがとう。 –

+0

私は動作する例を掲載しました。 – sra

答えて

5

コメントはOPは私がダウンして問題を追跡

OKを書いた

をつり上げます私は であるswitch文が間違っていて、最後に作成された menuItemを削除して、ロジックをもう一度通過しました。それでも正しい答えを と同じようにマークします(config objを渡します)。

var menu = Ext.create('Ext.menu.Menu', { 
    width: 100, 
    height: 100, 
    floating: false, // usually you want this set to True (default) 
    renderTo: Ext.getBody(), // usually rendered by it's containing component 
    items: [{ 
     text: 'icon item', 
     iconCls: 'add16' 
    },{ 
     text: 'text item' 
    },{ 
     text: 'plain item', 
     plain: true 
    }] 
}); 

menu.add({text:'test'}); 

私はかなりわかりませんが、あなたがmenuを見たときにAPIに応じてメニューをデフォルトタイプとしてパネルを持っていますが、メニュー項目が応じてのようだ:


この例では動作しますmenuitem API
これは少し混乱するかもしれません。

+0

OK問題を追跡します。私は、最後に作成されたmenuItemを削除して、ロジックをもう一度通過させる欠陥のあるswitchステートメントを持っていました。それでも、(config objを渡すことによって)あなたの答えを正しいものとしてマークします。 –

+1

@JosvicZammit私が助けることができ、それは今働いています;) – sra

+0

@sra OPの答え*がそのまま動作することを、一番上に答えるように更新できますか?私はここに来て最初にコメントを読まずに、野生のガチョウの追跡をして、設定オブジェクトとして追加されたメニュー項目に熱心な描画を強制しようとしました。明確にするために、OPのアプローチ*はまったく同様に機能します。 –

関連する問題