从我的gsp调用extjs函数

时间:2013-03-13 17:33:27

标签: extjs

我试图从我的gsp调用extjs函数 基本上该函数在deleteFiling.js中,我在gsp头文件中引用

<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函数。

由于

1 个答案:

答案 0 :(得分:0)

您的代码将confirmFiling函数定义为您传递给Ext.onReady的匿名函数的本地属性。

但是你的onclick事件试图调用它希望在全局范围内找到的confirmFiling函数(与窗口范围相同)。

如果这是您的整个代码,并且您将不再使用Ext编写函数,模块或其他组件,您可以创建一个全局变量并将其设置为与confirmFiling函数相同,如下所示:

myGlobalVar = function confirmFiling(){...}

然后可以从onclick事件处理程序访问myGlobalVar。请注意,全局变量没有var声明。如果你把var放在它前面那么它就变成了一个本地的。

另一种(更好的)方法是定义命名空间并在该命名空间内创建函数。以下是一个示例:http://docs.sencha.com/ext-js/3-4/#!/api/Ext-method-ns 顺便说一下,我假设你使用的是ExtJS 3x。  在命名空间中定义函数后,可以通过事件处理程序中的命名空间调用它。