我有一個CFC這主要是標籤,但我想用structEach功能,它採用封閉的,所以我開了一個CFSCRIPT:ColdFusion的 - 在CFSCRIPT的invoke參考電流分量
<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」作爲組件,但這也行不通。只能使用方法名稱,但如何使用它的等價物只有方法名稱?用於CF10的Adobe CFML文檔表明組件名稱不是可選的,就像它在標籤中一樣。
FWIW,我直接複製粘貼函數的名稱從它的聲明稍後。我在application.cfc中使用onError向自己發送拋出的異常,並且該消息正確地列出了組件的路徑,至少在Windows中如何導航(如果不在Web上的話)(\ \ hq-devfs \ development $ \ ... \ myProject \ cfc \ dupCheck.cfc,)但它是說在組件中找不到該方法?
是的,一切都存在,等等。它激起了調用。提前
<cfcomponent displayname="dupCheck" output="yes" namespace="http://schemas.xmlsoap.org/wsdl/http/" style="document" hint="">
感謝:
萬一有幫助,該組件由此產生!
編輯:H'okay,根據下面的答案編輯後,正確的結果是:numRes=invoke("","searchByNumberFromName",argsStruct);
所以這裏的「gatcha」是,你仍然必須通過那空串; Adobe的文檔並不是在開玩笑說這是可選的。 (如果省略它,我會看到「複雜對象類型無法轉換爲簡單值」錯誤,但空字符串顯然默認爲當前的CFC。)
那麼什麼是相當於「這」在這種情況下?我想調用的在同一個文件中幾乎是十幾行。什麼需要var'd是;這只是簡短的版本。 –
Janet
如果它在同一個組件中,則不需要爲它添加任何內容。它只是numRes = searchByNumberFromName(如果你按順序傳入參數,它們不需要命名)。 –
謝謝!:D把它表示出來; CF需要一個空字符串引用當前組件。 – Janet