我正在编写一个标记,该标记跟踪被调用了多少次,以便为其元素生成唯一的ID:
%{
try {
coolTagId++;
} catch (Exception) {
coolTagId = 0;
}
}%
<div id='cool-tag-${coolTagId}'></div>
...
$('#cool-tag-${coolTagId}').click(function(){alert("Cool Tag ${coolTagId} clicked")});
当我多次在页面中包含此标记时,令我惊讶的是,我看到
coolTagId
每次评估都为0。为什么会这样呢?(在此期间,我将使用某种UID,我只想了解为什么以上代码段不起作用)
最佳答案
我不知道为什么会这样,但这并不令我惊讶。 Play是一个无状态框架,因此看起来自然不会在同一标签的两个实例之间共享状态。
有趣的是,即使事先使用#{set coolTagId:0 /}
设置值也不起作用。
但是,有效的方法是在标签中设置值。将其放在标签的末尾:#{set coolTagId:coolTagId /}
。这样,您可以将值手动推送到基本模板。