1

ExtJSは初めてです。

これは私のウィンドウ定義です:

this.dialog = new Ext.Window({
title : "About us",
layout  : 'anchor',
modal   : true,
autoEl : {
        tag : "iframe",
        id: "myframe",
        src : "../editor/actorseditor.html",
        height: 500,
        width : 600
} });   
this.dialog.show();

「actorseditor.html」からダイアログウィンドウを閉じたい。

これを達成する方法。また、開いたウィンドウには閉じるボタンがありません。

前もって感謝します

4

3 に答える 3

1

これは、iFrameのhtmlページが親ページと同じアプリケーションからのものである場合にのみ機能します。または、少なくともプロトコル、サブドメイン、ドメイン、およびポートはすべて同じです。

親ページで、子ページ(iframe)で実行されているJavaScriptによって呼び出されるグローバル関数を公開する必要があります。

子ページで次のように呼び出します。

 if (window.parent && window.parent.myGlobalFunction) {
       window.parent.myGlobalFunction('hello!');
  }

親ページには、次のグローバル関数を含めます(もちろん必要に応じて名前を付けます)。

function myGlobalFunction(input){
        console.log('message received:'+input);
        MyApp.app.fireEvent('closeMyWindow',input);
    }

これは、MVCを使用していて、プロパティ「app」を作成し、アプリケーション起動関数で「this」に設定したことを前提としています。そして、次のようなアプリケーション全体のイベントをリッスンしているコントローラーがあること。

Ext.define('MyApp.controller.Qnum', {
    extend:'Ext.app.Controller',
    init:function(){
        this.control({
            ...
        });
        //listen for app wide event fired by : MyApp.app.fireEvent('closeMyWindow',input);
        this.application.on({
            closeMyWindow: this.closeWindowItsDrafty,
            scope: this
        });
    },
    closeWindowItsDrafty:function(){
       //get reference to my window
       //call myWindow.close();
    }
于 2013-01-29T01:03:31.490 に答える
0

私はactorseditor.htmlであなたがボタンを持っている必要があると仮定します

このボタンでは、次のリスナーを設定できます。

listeners : {
    click : function () {
         Ext.getCmp('yourdialogid').close();
    }
}

また、ダイアログボックスにIDを設定する必要があります。

于 2013-01-28T16:16:57.730 に答える
0

閉じるボタンリスナーの内部をフォローしてみてください。

var parentDialogWindow = window.parent.Ext.cmp('ID_OF_DIALOG_WINDOW');
parentDialogWindow[parentDialogWindow.closeAction]();
于 2017-08-25T22:19:22.030 に答える