我试图从我的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函数。
由于
答案 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。 在命名空间中定义函数后,可以通过事件处理程序中的命名空间调用它。