あなたは非メニューの変更のすべてを分離することができます:ここで
は、私は(私は他のメニューにそれをプッシュする場合を除いて、正常に動作している)元々のボタンを生成するためのメニューAに呼び出す機能ですあなたのハンドラの一部なので、のような:
const handlers = {
firstHandler(btn) {
doWhateverFirstButtonDoes(btn);
},
secondHandler() { ...
};
次に、あなたが最初のメニュー上のすべてのボタンは、「2番目のメニューに追加」機能を分離することができます:
addToSecondMenu = function(btn) {
// I'm not clear where txt/font come from, but if you have the btn
// presumably you can get the right txt/font for it
btn.up("button").menu.style = font;
btn.up("button").down("#menuB").items.items.push(new btn(txt, font));
}
その後
、あなたが最初のメニューをバインドするとき、次の2つを組み合わせることができます:
firstMenuButon.onClick = function(e) {
handlers.firstHander(e.target);
addToSecondMenu(e.target);
}
次に、2番目のメニューで、あなただけのaddToFirstMenu
で、同じことを行うことができます
addToFirstMenu = function(btn) {
// I'm not clear where txt/font come from, but if you have the btn
// presumably you can get the right txt/font for it
btn.up("button").menu.style = font;
btn.up("button").down("#menuA").items.items.push(new btn(txt, font));
}
firstMenuButonOnMenuB.onClick = function(e) {
handlers.firstHander(e.target);
addToFirstMenu(e.target);
}
私はあなたのコードをすべて見ずにはっきり言うことはできませんが、「ボタンが本当にやること」ロジックを「メニューからのボタンの追加と削除」ロジックから分離することで、記述した問題の種類を避けることができるはずです。
あなたのHTMLは何ですか? –
@SergChernataボタン自体のhtmlはtxt変数として渡されます。申し訳ありませんが、より明確にする必要があります。 –
メニューAIで可能な場合に備えて追加するだけです。 items:[new btn ( "randomhtml"、 "courier")] とすべてが正しくレンダリングされます –