如何創建一個全局函數,我可以從ColdFusion Flash Forms頁面中的actionscript代碼調用該函數。目前,頁面上的所有動作腳本功能都與一個事件相關聯,例如,如何創建一個GetCustomDate方法,該方法可以通過下面的兩個cfsavecontents訪問。目前,我必須在每個cfsavecontent定義中爲GetCustomDate執行所需的任何功能。如何在Coldfusion Flash Form上創建全局函數頁面
例如:
<cfsavecontent variable="OnCustomDateClick">
var customdate = GetCustomDate();
//do other stuff
</cfsavecontent>
<cfsavecontent variable="OnNewDateClick">
var newdate = GetCustomDate();
//do other stuff
</cfsavecontent>
<cfinput onClick="#OnCustomDateClick#" type="text" name="customDate">
<cfinput onClick="#OnNewDateClick#" type="text" name="newDate">
的代碼可能不是100%準確的,但你可以得到什麼,我試圖完成的JIST。我真的希望有辦法做到這一點。
--- UPDATE ------------------------------------------ -------------------------------------
好的,所以根據目前的評論,除了一件事之外,我們差不多: 請原諒,代碼稍微複雜一點,就是我之前給出的簡單的GetCustomDate示例。說明問題很簡單。
給出下面的代碼。 當我嘗試並調用GetCurrency像這樣:
_global.GetCurrency('40346feb-feb9-11d8-995f-00c0df070000');
alert('Symbol After: ' + _global.GetMyResult());
輸出是:
Symbol Before: $
Symbol After: Undefined
你可以通過警報看到,CURRENCYSYMBOL值($)設置,並從GetCurrency中訪問方法,但是一旦它離開該方法,它的值就是'undefined'。
我不知道爲什麼會發生這種情況。我也嘗試從GetCurrency方法返回currencySymbol(這是註釋掉的)變量,但是flash/actionscript似乎不喜歡從OnResult事件返回值。
我該如何調用GetCurrency函數,以便一旦函數完成後,我可以以某種方式訪問結果?
<cfsavecontent variable="onLoad">
<!--- Init --->
_global.myResult;
//create connection
var connection:mx.remoting.Connection = mx.remoting.NetServices.createGatewayConnection("http://<cfoutput>#cgi.HTTP_HOST#</cfoutput>/flashservices/gateway/");
//declare service
var myService:mx.remoting.NetServiceProxy;
var serviceName:String = '';
var responseHandler = {};
responseHandler.onStatus = function(stat: Object):Void
{
//if there is any error, show an alert
alert("Error while calling cfc:" + stat.description);
}
<!--- MyResult Get/Set --->
_global.SetMyResult = function(result)
{
_global.myResult = result;
alert('_global.myResult' + _global.myResult)
}
_global.GetMyResult = function()
{
return _global.myResult;
}
<!--- Get Service Name --->
_global.GetServiceName = function(serviceName)
{
var tServiceName:String = '';
var tWebRoot:String = '<cfoutput>#Replace(Mid(request.site.webroot,2,Len(request.site.webroot)-1),'/','.','ALL')#</cfoutput>';
<cfif request.site.webroot NEQ "">
tServiceName = tWebRoot + '.' + + serviceName;
</cfif>
<!--- SALT --->
tServiceName = 'pricelist.webroot.' + serviceName;
return tServiceName;
}
<!--- Get Currency --->
_global.GetCurrency = function(currencyId)
{
responseHandler.onResult = function(results: Object):Void
{
var currencySymbol:String = '';
if (results.length == 0)
{
alert('No details found!');
}
else
{
currencySymbol = results.getItemAt(0).currencySymbol;
_global.SetMyResult(currencySymbol);
alert('Symbol Before: ' + _global.GetMyResult());
}
//return currencySymbol;
}
serviceName = _global.GetServiceName('components.currency');
myService = connection.getService(serviceName, responseHandler);
myService.getDetail(currencyId);
}
_global.GetCurrency('40346feb-feb9-11d8-995f-00c0df070000');
alert('Symbol After: ' + _global.GetMyResult());
</cfsavecontent>
感謝
謝謝,但不幸的是,這將無法正常工作。包含在cfsavecontents中的代碼是ActionScript,而不是cfscript。所以你不能像這樣調用函數。 – Cheeky 2011-06-08 18:10:41
編輯提供另一種方法。 – 2011-06-08 18:29:28
謝謝 - 這讓我朝着正確的方向發展。我已經在表單的OnLoad事件中實現了這一點,並且迄今爲止除了一件事情之外,一切正常。我已更新該帖子以反映此問題。你能提供任何建議嗎?謝謝 – Cheeky 2011-06-09 07:24:00