ColdFusion - 在 cfscript 的调用中引用当前组件

ColdFusion - reference current component in cfscript's invoke

我有一个主要是标签的 CFC,但我想使用使用闭包的 structEach 函数,所以我打开了一个 cfscript:

<cfscript>
                structEach(res,function(key,value){

                    /*<cfinvoke method="searchByNumberFromName" returnvariable="numRes">
                        <cfinvokeargument name="showActive" value="#formStruct.showActive#" />
                        <cfinvokeargument name="dsn" value="#c#" />
                        <cfinvokeargument name="cusNum" value="#res.c#" />
                    </cfinvoke>*/

                    var argsStruct=structNew();
                    structInsert(argsStruct,"showActive",formStruct.showActive);
                    structInsert(argsStruct,"dsn",key);
                    structInsert(argsStruct,"cusNum",value);

                    var holderObj=createObject("component","dupCheck");
                    numRes=invoke(holderObj,"searchByNumberFromName",argsStruct);
                    WriteDump(numRes,"browser","html",true,"numRes from namesearch");
                }); //end structEach
            </cfscript>

注释掉的代码相当于我想做的事情的标签,(c 是当这让我发疯的时候留下来的。)经过一些无用的谷歌搜索后,(我知道如何输入,谢谢...)我试图用当前组件创建一个对象...这没有任何意义,但无论如何,我很绝望。我还尝试将 "this" 指定为组件,但这也不起作用。可以仅与方法名称一起使用,但如何仅与方法名称一起使用它的等价物? Adobe 的 CF10 CFML 文档表明组件名称不像在标签中那样是可选的。

FWIW,我稍后直接从​​函数的声明中复制粘贴了函数的名称。我在 application.cfc 中使用 onError 将抛出的异常通过电子邮件发送给自己,并且该消息正确地列出了组件的路径,至少在 Windows 中如何导航到那里,如果不是的话在网络上,(\\hq-devfs\development$\...\myProject\cfc\dupCheck.cfc,) 但是它说在组件中找不到该方法???

是的,一切都存在等等。它在调用时爆炸了。

如果有帮助,组件是这样创建的:

<cfcomponent displayname="dupCheck" output="yes" namespace="http://schemas.xmlsoap.org/wsdl/http/" style="document" hint="">

提前致谢!

编辑:好吧,根据下面的答案进行编辑后,正确的结果是:numRes=invoke("","searchByNumberFromName",argsStruct); 所以这里的 "gatcha" 你仍然必须传入那个空的细绳; Adobe 的文档并不是在开玩笑说它是可选的。 (如果我省略它,我会得到 "Complex object types cannot be converted to simple values" 错误,但空字符串显然默认为当前 CFC。)

yourObject 将是包含方法 searchByNumberFromName

的对象的名称
numRes = yourObject.searchByNumberFromName(showActive = formStruct.showActive, dsn = c, cusNum = res.c);

如果这在函数中,请确保你 var numRes 以保持线程安全