2013-04-22 10 views
1

호출.내가 구성 요소 <code>object</code>에서 <code>methodName</code>라는 이름의 함수를 호출 할 수있는 방법</p> <pre><code><cfset methodName = "a"> <cfset object = createObject(...)> </code></pre> <p>이있는 경우 동적 메소드 이름 (문자열에서 methodName로)

<cfset object[methodName]()> 

과 같이 JS에서 작동하는 것으로 예상되는 내용이지만 작동하지 않는 것 같습니다. 나는 그러나 나는 내가 (지금 임시 수정으로 사용) 해당 태그를 사용하지 않는 이유에 탐구 할 필요가 있다고 생각하지 않는다, 나는 cfinvoke 사용할 수 있다는 것을 알고있다.

답변

2

스크립트 기반의 코드 10 + 어도비 ColdFusion에서의 cfinvoke뿐만 아니라 invoke()있다 (당신이 신뢰할 수 있는지 확인).

+0

는 슬프게도'invoke'은 간단하게 추가 할 것인지 충분히 openBD 작동하지만, 공정 얻을 앨런에게 물어 가고, CF10에서 openbd 만 작업에서 사용할 수 없습니다. –

+0

거기에 openbd 태그가 표시되지 않았습니다. 죄송합니다. –

+0

은 명확하게 자신을 만들었을 수도 있지만 종류의 어떤 보편적 인 솔루션이 있었다 기대했다. –

-1

cfinvoke 또는 evaluate('object.#a#()')

+0

는 이미 cfinvoke' (bleh)'의 인식이었고, 비록이'evaluate' 내가 evaluate' 더 악화 왜'내가 지적 할 필요가 있다고 생각하지 않습니다 유효한 솔루션입니다. –

0

그것은 당신이 항상 그것을되어 cfinclude 다음 .CFM 파일에 코드의 라인을 작성하고 수 klutzy입니다 만.

2

당신은 개체에 명시 적으로 키에 알 수없는/동적 방법을 설정하고 해당 키에서 그것을 실행할 수 있습니다

<cfset methodName = "a"> 
<cfset object = createObject(...)> 
<cfset object.doMethod = object[methodName]> 
<cfset object.doMethod()> 

을 여전히 매우 우아하지,하지만 <cfinvoke>evaluate() 방지 할 수 있습니다. 나는 질문의 모든 버전에서 언급 한 바와 같이