我一直在尝试找出正确的符号来使用该evaluate()函数。让我尝试解释一下:
我有几个组件:tasks.cfc,risks.cfc...等,每个组件都有各自的功能。命名约定类似,例如在tasks.cfc 中
我有该方法countAllFunctionInstanceTasks,返回变量具有相同的名称(countAllFunctionInstanceTasks),并且在risks.cfc我有等效的方法countAllFunctionInstanceRisks,并且其返回变量具有相同的名称(countAllFunctionInstanceRisks)。每个返回变量都是一个具有以下键的结构:
totalRed
totalAmber
totalGreen
totalComplete
totalOpen
Run Code Online (Sandbox Code Playgroud)
当我调用该组件时,我动态执行此操作:
<cfinvoke component="components.#session.myPermissions[i][j][k][l][m][n][o]["activityName"]#"
method="countAllFunctionInstance#session.myPermissions[i][j][k][l][m][n][o]["activityName"]#"
returnvariable="countAllFunctionInstance#session.myPermissions[i][j][k][l][m][n][o]["activityName"]#">
Run Code Online (Sandbox Code Playgroud)
所做的[i][j][k][l][m][n][o]["activityName"]就是从一组嵌套结构中提取一个值,并将重新调整该值(保持上面的示例)“任务”或“风险”。
这一点工作正常,它会按预期重新调整相应的值,例如,如果我在哪里:
<cfoutput>#countAllFunctionInstanceTasks.totalOpen#</cfoutput>
Run Code Online (Sandbox Code Playgroud)
我将从tasks.cfc 中获得正确的值并且
<cfoutput>#countAllFunctionInstanceRisks.totalOpen#</cfoutput>
Run Code Online (Sandbox Code Playgroud)
我将从中获得正确的值risks.cfc。
到目前为止一切都很好,但是......我需要动态获取这些值,但我正在努力获取正确的符号来动态返回相应的值。所以我可以做类似的事情:
<p>countAllFunctionInstance#session.myPermissions[i][j][k][l][m][n][o]["activityName"]#.totalOpen</p>
Run Code Online (Sandbox Code Playgroud)
这将返回字符串:
"countAllFunctionInstanceTasks.totalOpen"
"countAllFunctionInstanceRisks.totalOpen"
Run Code Online (Sandbox Code Playgroud)
但我想做的是动态生成已经存在并已从相应 cfc 重新调整的变量名称。
到目前为止,我所能做的就是:
<cfset totalOpen = "countAllFunctionInstance#session.myPermissions[i][j][k][l][m][n][o]["activityName"]#.totalOpen" />
<cfoutput>#evaluate(totalOpen)#</cfoutput>
Run Code Online (Sandbox Code Playgroud)
我知道使用该evaluate()函数不是一个好习惯,我试图找到一种替代符号,例如:
#["countAllFunctionInstance" & session.myPermissions[i][j][k][l][m][n][o]["activityName"] & ".totalOpen"]#
Run Code Online (Sandbox Code Playgroud)
我已经阅读了我可以找到的关于评估()替代方案和数组表示法的其他帖子,但这些与我在这里的用例不太一样,经过多次尝试和内涵,没有任何效果,我完全被难住了!
有人可以帮我吗?
谢谢你,
詹姆士
您调用的字符串evaluate():
#["countAllFunctionInstance" & session.myPermissions[i][j][k][l][m][n][o]["activityName"] & ".totalOpen"]#
Run Code Online (Sandbox Code Playgroud)
该变量countAllFunctionInstance应该在variables请求的范围内。所以你应该能够像这样引用它:
variables["countAllFunctionInstance" & session.myPermissions[i][j][k][l][m][n][o]["activityName"]].totalOpen
Run Code Online (Sandbox Code Playgroud)
或者
variables["countAllFunctionInstance" & session.myPermissions[i][j][k][l][m][n][o]["activityName"]]["totalOpen"]
Run Code Online (Sandbox Code Playgroud)
或者
x = variables["countAllFunctionInstance" & session.myPermissions[i][j][k][l][m][n][o]["activityName"]];
#x.totalOpen#
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
78 次 |
| 最近记录: |