我得到一个可以包含CF自定义标签的变量。 E.g。
<cfset a = '<model:sparkline id="1"/>'/>
我希望将其评估为HTML并输出。不确定如何/如果我能做到这一点。
答案 0 :(得分:2)
您可以修改自定义标签吗?如果是这样,您可以使用caller
范围在调用页面中设置变量。因此,在自定义标记内,您可以执行<cfset caller.a = "whatever" />
,这将在调用页面的variables
范围内设置值。
如果您不想修改自定义标记,则可以使用<cfsavecontent>
将输出保存到变量中。例如:
<cfsavecontent variable="a">
<model:sparkline id="1" />
</cfsavecontent>
答案 1 :(得分:1)
Sean Coyne的回答是正确的,只要导入包含在与cfsavecontent标记相同的上下文中:
<cfimport taglib="./tags" prefix="model">
<cfsavecontent variable="a">
<model:sparkline id="1" />
</cfsavecontent>
<cfoutput>#a#</cfoutput>
将导致sparkline customtag的动态评估输出。
答案 2 :(得分:1)
输出代码并让它执行是不可能的。 OUTPUT只是意味着输出。这并不意味着“跑”。
让CF执行CF代码的唯一方法是遵循正常渠道: *申请模板; *包括模板; *将模板称为自定义标签或CFMODULE; *在CFC中调用方法; *其他人?不管怎样,你明白了。
因此,如果您拥有动态创建并希望执行的代码,则需要将其写入文件,然后通过最合适的机制调用它。但是请注意:像这样运行动态代码会产生相当大的开销,因为代码需要在运行之前进行编译,而编译并不是方案中最快的过程。这里做的“最好的”是尝试在需要之前编写和编译文件,并且只重写它需要更新的文件。不要在每次请求时重新执行此操作。但是,理想情况下,根本不要做这种事情。人们通常可以用不同的方式处理事情。