在 Javascript 代码中使用流体有效,但在同一文件中无效

Using fluid in Javascript code work and no work in same file

我在流体模板的 Javascript 代码中使用流体变量。代码是:

<script type="text/javascript">
  $(function () {
    $('#{element.uniqueIdentifier}').datetimepicker();
    /*Call AJAX*/
    $('#{element.uniqueIdentifier}').change(function (event) {
      .... //Other code lines
    });
  });
</script>

呈现的HTML是:

<script type="text/javascript">
 $(function () {
  $('#solicituddeAuditorios-repeatablecontainer-1_0_datetimepicker-2').datetimepicker();
  /*Call AJAX*/
  $('#{element.uniqueIdentifier}').change(function (event) {
  .... //Other code lines
  });
 });
</script>

渲染时,第一个值被正确替换,但下一个值未正确替换,并在 javascript 中生成语法错误。我曾尝试使用一个变量来保存值,但在这种情况下 none 流体变量被替换;并使用 <![CDATA[ { ]]> 生成其他错误,其中转义 javascript 并仅显示变量。

我正在使用 TYPO3 8.7。

我认为你应该像这样包装你的代码:

 <script type="text/javascript">
<![CDATA[var myUniqueElementIdentifier = "#" + ]]>{element.uniqueIdentifier}<![CDATA[;]]>
      $(function () {
        $(myUniqueElementIdentifier).datetimepicker();
        /*Call AJAX*/
        $(myUniqueElementIdentifier).change(function (event) {
          .... //Other code lines
        });
      });
    </script>

我不明白发生了什么,因为很多时候使用不同的解决方案作为普通流体键 ({}) 或 <![CDATA。在这种情况下,另一个可行的替代方法是使用 f:format.raw 流体标签

<script type="text/javascript">
$(function () {
  $('#solicituddeAuditorios-repeatablecontainer-1_0_datetimepicker-2').datetimepicker();
  /*Call AJAX*/
  $('#<f:format.raw>{element.uniqueIdentifier}</f:format.raw>').change(function (event) {
    .... //Other code lines
  });
 });
</script>