JMo*_*Moy 1 coldfusion custom-tags
我对ColdFusion有点新鲜(来自Java/OOP世界)
我有一个自定义标记,它在cfscript中运行一些东西并输出一个值.我想让这个自定义标签(让我们称之为A)调用另一个自定义标签(让我们称之为B,一种具有某种"静态"功能的更通用的自定义标签),并带有一定的参数.
如何从A中拨打B?如何使用A中B的返回值?
A的代码
<cfscript>
//Call to other custom tag here?:
//foo = [CUSTOMTAG param="stuff"];
value = foo;
</cfscript>
<cfoutput>#value#</cfoutput>
Run Code Online (Sandbox Code Playgroud)
你在维护一些旧代码吗?否则,编写用户定义的函数将比使用旧式自定义标记更容易使用和/或测试.
虽然自定义标记擅长生成标记,但它在返回变量方面并不擅长.
您应该考虑编写用户定义函数(UDF),就像您在Java中所做的一样.
不是说自定义标签不能返回值,它不像函数那么自然.
要从自定义标记返回值,您需要使用Caller范围(映射到variables调用方的范围).就像是...
<!--- customTag.cfm --->
<cfset caller[attributes.returnVar] = "some value">
Run Code Online (Sandbox Code Playgroud)
并像这样调用customTag:
<cf_customTag returnVar="foo">
<cfdump var="#variables.foo#">
Run Code Online (Sandbox Code Playgroud)
只需跟踪调用者是谁,并在调用者范围内设置值,您就可以在自定义标记内,自定义标记内,自定义标记内调用自定义标记...
如果需要将自定义标记的输出捕获到var中,请将自定义标记调用包装在a中<cfsavecontent> </cfsavecontent>.