在自定义标记中使用自定义标记的ColdFusion
我对来自Java/OOP世界的ColdFusion有点陌生 我有一个自定义标记,它在cfscript中运行一些东西并输出一个值。我想要这个自定义标记,我们称它为A调用另一个自定义标记,我们称它为B,一个更通用的自定义标记,有一种带有特定参数的“静态”函数 我如何从A内部呼叫B? 如何在A中使用B的返回值 A的代码在自定义标记中使用自定义标记的ColdFusion,coldfusion,custom-tags,Coldfusion,Custom Tags,我对来自Java/OOP世界的ColdFusion有点陌生 我有一个自定义标记,它在cfscript中运行一些东西并输出一个值。我想要这个自定义标记,我们称它为A调用另一个自定义标记,我们称它为B,一个更通用的自定义标记,有一种带有特定参数的“静态”函数 我如何从A内部呼叫B? 如何在A中使用B的返回值 A的代码 <cfscript> //Call to other custom tag here?: //foo = [CUSTOMTAG param="stuff
<cfscript>
//Call to other custom tag here?:
//foo = [CUSTOMTAG param="stuff"];
value = foo;
</cfscript>
<cfoutput>#value#</cfoutput>
你在维护一些旧代码吗?否则,编写用户定义的函数将比使用老式的自定义标记更容易使用和/或测试 虽然自定义标记擅长于生成标记之类的操作,但它并不擅长返回变量 您应该考虑编写用户定义的函数UDF,就像在Java中一样 并不是说自定义标记不能返回值,它只是不像函数那样自然 要从自定义标记返回值,需要使用映射到调用者的变量范围的调用者范围。类似于
<!--- customTag.cfm --->
<cfset caller[attributes.returnVar] = "some value">
并按如下方式调用customTag:
<cf_customTag returnVar="foo">
<cfdump var="#variables.foo#">
只需跟踪谁是调用者,并在调用者范围中设置值,您就可以在自定义标记内、自定义标记内、自定义标记内调用自定义标记
如果您需要将自定义标记的输出捕获到var中,请将自定义标记调用包装到var中。您是否在维护一些旧代码?否则,编写用户定义的函数将比使用老式的自定义标记更容易使用和/或测试 虽然自定义标记擅长于生成标记之类的操作,但它并不擅长返回变量 您应该考虑编写用户定义的函数UDF,就像在Java中一样 并不是说自定义标记不能返回值,它只是不像函数那样自然 要从自定义标记返回值,需要使用映射到调用者的变量范围的调用者范围。类似于
<!--- customTag.cfm --->
<cfset caller[attributes.returnVar] = "some value">
并按如下方式调用customTag:
<cf_customTag returnVar="foo">
<cfdump var="#variables.foo#">
只需跟踪谁是调用者,并在调用者范围中设置值,您就可以在自定义标记内、自定义标记内、自定义标记内调用自定义标记
如果需要将自定义标记的输出捕获到var中,请将自定义标记调用包装到var中。下面是我最后要做的。在我的A文件调用中,A调用B:
<cfscript>
b = createObject("component","bName");
returnVal = b.method("paramInfo");
</cfscript>
在我的B文件中
<cfcomponent displayname="bName">
<cffunction name="method" returntype="string" output="false">
<cfargument name="paramName" required="yes" type="string">
<cfscript>
returnVal = paramName;
</cfscript>
<cfreturn returnVal>
</cffunction>
</cfcomponent>
这就是我最后做的。在我的A文件调用中,A调用B:
<cfscript>
b = createObject("component","bName");
returnVal = b.method("paramInfo");
</cfscript>
在我的B文件中
<cfcomponent displayname="bName">
<cffunction name="method" returntype="string" output="false">
<cfargument name="paramName" required="yes" type="string">
<cfscript>
returnVal = paramName;
</cfscript>
<cfreturn returnVal>
</cffunction>
</cfcomponent>
很好的评论,亨利。我想知道JMoy是否正在试图找出如何从cfscript中调用他的另一个自定义标记?我不确定我有没有答案。我想实际上我会使用cffunction创建一个函数,调用他的第二个自定义标记,然后在cfscript中调用该函数。。。有点像包装纸。很好的评论,亨利。我想知道JMoy是否正在试图找出如何从cfscript中调用他的另一个自定义标记?我不确定我有没有答案。我想实际上我会使用cffunction创建一个函数,调用他的第二个自定义标记,然后在cfscript中调用该函数。。。有点像包装纸。