我目前正在寻找#assign变量的范围。但是,范围似乎令人困惑,请参阅以下示例并尝试解释。我有一些假设可行,但如果有人有具体的文件,那将非常有帮助。
<#assign test1 = a.test1/>
<#if some_condition>
<#if a.test1?contains(",")>
<#assign mylist = a.test1?split(",")/>
<#assign test1 = mylist?size-1?int/>
</#if>
<!-- Line is giving me exception, if I convert everything to #global it works -->
<#assign testing>${test1} SAJNF</#assign>
</#if>
有人可以在#assign和#global中解释范围吗?
答案 0 :(得分:2)
该示例应与#assign
和#global
同样有效。那里你有某种疏忽。
从#assign
VS #global
开始:通过#assign
设置的变量只能从分配它们的模板中看到,另外在#include
- d所在的模板中可见该模板(或#include
- d模板中的#include
- d等),因为#include
- ing非常类似于复制粘贴。但是,如果您#import
是一个模板,因为它有自己的命名空间,它就不会与#assign
模板共享#import
个变量。它会与它共享全局变量;从每个模板中可以看到使用#global
设置的变量,就像数据模型一样。你几乎不应该使用#global
BTW。