如果我有
<cfset methodName = "a">
<cfset object = createObject(...)>
如何从组件methodName
调用名为object
的函数。
<cfset object[methodName]()>
可以在JS中使用,但这似乎不起作用。我知道我可以使用cfinvoke
,但我认为我不需要深入研究为什么我不想使用该标记(现在将其用作临时修复)。
答案 0 :(得分:2)
基于脚本的代码在Adobe ColdFusion 10+中有cfinvoke
和invoke()
。
答案 1 :(得分:2)
您可以将unknown / dynamic方法设置为对象中的显式键,然后从该键执行:
<cfset methodName = "a">
<cfset object = createObject(...)>
<cfset object.doMethod = object[methodName]>
<cfset object.doMethod()>
仍然不是很优雅,但它避免了<cfinvoke>
和evaluate()
。
答案 2 :(得分:0)
它是klutzy但是,你总是可以将代码行写入.cfm文件,然后将其包括在内。
答案 3 :(得分:-1)
cfinvoke
或evaluate('object.#a#()')
(确保您可以信任)