1

gspからextjs関数を呼び出そうとしています。基本的に、この関数は、gspヘッダーで参照しているdeleteFiling.jsにあります。

<g:javascript src="deleteConfirm.js"></g:javascript>

およびdeleteConfirm.js:

Ext.onReady(function(){

Ext.BLANK_IMAGE_URL = appContextRoot
+ '/js/extjs/resources/images/default/s.gif';
var theme = appContextRoot
+ "/js/extjs/resources/css/xtheme-gray.css";
Ext.util.CSS.swapStyleSheet("theme", theme)

Ext.QuickTips.init();
Ext.form.Field.prototype.msgTarget = 'side';

function confirmFiling(){
    Ext.MessageBox.show({
        title:'Commit Confirmation',
        msg: 'You are about to <strong>Delete</strong> the entire <strong>Filing</strong>. This \n action cannot be reversed. \n\nAre you sure you want to Proceed',
        buttons: Ext.MessageBox.YESNO,
        fn: processDelete,
        icon: Ext.MessageBox.QUESTION
    });
}})

そして私は次のようにconfirmFiling関数を呼び出しています:

<g:link action="deleteFiling" id="${filingInstance.id}" onclick="confirmFiling()"> <img src="${resource(dir:'images',file:'trash.gif')}" title="Delete" />

関数が定義されていません。私はextjsなしでこれを行うことができることを知っていますが、私の質問は、htmlまたはgspファイルからextjs関数を呼び出す方法です。

ありがとう

4

1 に答える 1

0

コードでは、confirmFiling 関数を、Ext.onReady に渡す無名関数のローカル プロパティとして定義しています。

ただし、onclick イベントは、グローバル スコープ (ウィンドウ スコープと同じ) で見つかると予想される confirmFiling 関数を呼び出そうとしています。

これがコード全体であり、Ext を使用してこれ以上関数、モジュール、またはその他のコンポーネントを記述しない場合は、グローバル変数を作成し、次のように confirmFiling 関数と等しく設定するだけです。

myGlobalVar = function confirmFiling(){...}

次に、 onclick イベント ハンドラーから myGlobalVar に到達できます。varグローバル変数の宣言がないことに注意してください。前に置くvarとローカルになります。

もう 1 つの (より良い) アプローチは、名前空間を定義し、その名前空間内に関数を作成することです。以下に例を示します: http://docs.sencha.com/ext-js/3-4/#!/api/Ext-method-ns ところで、ExtJS 3x を使用していると仮定します。名前空間内で関数を定義したら、イベント ハンドラーで名前空間を介して呼び出します。

于 2013-03-13T22:43:22.183 に答える