0

プロジェクトをExtJS4.0から4.1に移行しています。この写真はそれをすべて言います:

ここに画像の説明を入力してください

これが私がメニューを作成する方法です:

function addItems(items) {
    var toolBarItems = [];
    for (var i = 0; i < items.length; i++) {
        var newItem = {
            text: items[i].Name,
            command: items[i].Command,
            height: 24,
            cls: 'toolbarbtn'
        };
        if (items[i].subItems === undefined || items[i].subItems === []) {
            newItem.handler = clickToolbarItemHandler;
        }
        else {
            newItem.menu = Ext.create('Ext.menu.Menu', {
                items: addChildItems(items[i].subItems)
             }); 
        }
        toolBarItems.push(Ext.create('Ext.button.Button', newItem));
    }
    return toolBarItems;
}

function addChildItems(subItems) {
    var subMenuItems = [];
    for (var i in subItems) {
        var item = subItems[i];

        var subMenuItem = {
            text: item.Name,
            command: item.Command,
            shadow: false,
            cls: 'toolbarbtn' 
        };

        if (item.subItems === undefined || item.subItems === []) {
            subMenuItem.handler = clickToolbarItemHandler;
        }
        else
            subMenuItem.menu = Ext.create('Ext.menu.Menu', {
                items: addChildItems(item.subItems)
            });
        subMenuItems.push(subMenuItem);
    }
    return subMenuItems;
}

これは4.0では発生しませんでしたが、なぜ今発生しているのかについての説明が見つからないようです。何かご意見は?

アップデート:

@Lolo:cssファイルを更新するように通知してくれてありがとう。

残念ながら、それは問題を解決しませんでした。

私は次のようにrenderToを追加しようとしました:

function addChildItems(subItems) {
var subMenuItems = [];
for (var i in subItems) {
    var item = subItems[i];

    var subMenuItem = {
        text: item.Name,
        command: item.Command,
        cls: 'toolbarbtn' 
    };

    if (item.subItems === undefined || item.subItems === []) {
        subMenuItem.handler = clickToolbarItemHandler;
    }
    else
        subMenuItem.menu = Ext.create('Ext.menu.Menu', {
            //TODO: MIGV4
            shadow: false,
            renderTo: Ext.getBody(),
            items: addChildItems(item.subItems)
        });
    subMenuItems.push(subMenuItem);
}
return subMenuItems;

}

また、サブメニューの配置の問題は解決しましたが、予期しないエラーが発生します。もう一度、写真はそれをすべて示しています:

ここに画像の説明を入力してください

このバグは、メニューを初めてレンダリングするときにのみ発生します。もう一度テストすると、問題なく動作します。

何かご意見は??

4

1 に答える 1

2

この問題はJSコードに関連しているとは思いません。いくつかのスタイルの問題のように見えます。css新しいファイルにも切り替えましたか?JS4.1のソースとCSS4.0のファイルを含めることで、この動作を再現しました。例を参照してください:http://jsfiddle.net/ukqYU/2/

明らかな修正は、適切なCSSファイルをリンクすることです。

編集:4.1で.x-layerクラススタイルが少し変更されたため、この問題が発生する可能性があることがわかりました。に変更position:absolute;してposition: absolute !important;みてください.x-layer。その後、あなたは良いはずです。

于 2012-12-04T12:44:27.447 に答える