<cfset methodName = "a">
<cfset object = createObject(...)>
我如何可以调用从组件object
命名methodName
功能。我会期望沿线的东西
<cfset object[methodName]()>
在JS中工作,但这似乎并不奏效。我知道我可以使用cfinvoke
,但我不认为我需要深入研究为什么我不想使用该标签(现在将其用作临时修订)的原因。
<cfset methodName = "a">
<cfset object = createObject(...)>
我如何可以调用从组件object
命名methodName
功能。我会期望沿线的东西
<cfset object[methodName]()>
在JS中工作,但这似乎并不奏效。我知道我可以使用cfinvoke
,但我不认为我需要深入研究为什么我不想使用该标签(现在将其用作临时修订)的原因。
有cfinvoke
以及invoke()
在Adobe ColdFusion的10+的基于脚本的代码。
cfinvoke
或evaluate('object.#a#()')
(确保你可以信任的)
正如我在问题的所有版本中提到的,我已经知道'cfinvoke'(bleh),虽然'evaluate'是一个有效的解决方案,但我不认为我需要指出为什么'evaluate'更糟糕。 – 2013-04-22 12:16:34
虽然这很简单,但您可以将代码行写入.cfm文件,然后cfinclude它。
您可以将未知/动态方法设置为对象的明确重点,并从该键来执行:
<cfset methodName = "a">
<cfset object = createObject(...)>
<cfset object.doMethod = object[methodName]>
<cfset object.doMethod()>
仍然不是很优雅,但它避免了<cfinvoke>
和evaluate()
。
可悲的是'invoke'在openbd中不可用,只能在CF10中工作,会问Alan是否只是一个简单的补充来让openBD工作,但足够公平。 – 2013-04-22 12:17:25
我没有在那里看到openbd标签。抱歉。 – 2013-04-22 13:47:03
本可以让它更清晰,但有点希望有一些通用的解决方案。 – 2013-04-22 14:06:19