Как создать глобальную функцию, которую я могу вызывать из своего кода ActionScript на странице Flashfusion Coldfusion. В настоящее время все функциональные возможности ActionScript на странице связаны с событием, например, как мне создать метод GetCustomDate, к которому могут обращаться оба cfsavecontents ниже. В настоящее время я должен сделать все, что требуется для GetCustomDate, в каждом определении cfsavecontent.
Например:
<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% точным, но вы можете понять, чего я пытаюсь достичь. Я действительно надеюсь, что есть способ сделать это.
--- ОБНОВЛЕНИЕ ------------------------------------------- ------------------------------------
Хорошо, поэтому, основываясь на комментариях, мы почти на месте, за исключением одного:
Пожалуйста, извините, что код немного сложнее, чем простой пример GetCustomDate, который я привел ранее. Это было сделано просто для иллюстрации проблемы.
Учитывая код ниже.
Когда я пытаюсь вызвать GetCurrency так:
_global.GetCurrency('40346feb-feb9-11d8-995f-00c0df070000');
alert('Symbol After: ' + _global.GetMyResult());
Вывод:
Symbol Before: $
Symbol After: Undefined
Как видно из предупреждения, значение currencySymbol ($) устанавливается и доступно из метода GetCurrency, но как только он выходит из этого метода, его значение становится «неопределенным».
Я не уверен, почему это происходит. Я также пытался вернуть переменную currencySymbol (это закомментировано) из метода GetCurrency, но 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>
Спасибо