TYPO3 extbase – 流体变量到jquery

怎样才能将流体变量从控制器传递给jQuery或JavaScript?

我的控制器里面:

public function tabs () { $this->view->assign('tab', 1); } 

内部流体我将变量用作{tab}但是如何传递给JavaScript? 任何帮助,将不胜感激…

流体模板行为中的JS在大多数情况下都很糟糕,如果您的JS代码包含任何花括号,则需要包含外部脚本,而不是将脚本放在视图中。

原因是Fluid认为所有花括号都属于它的范围,所以当你写:

 $('#mySelectBox').change(function() { // functions body code // next line // next line }); 

Fluid破坏JS并将其渲染为:

 $('#mySelectBox').change(function() Array); 

然后我经常使用这样的东西:

在视图中:

   

在script.js中:

 $("#container").val(TxMyExtKeyTabNumber); 

如果您需要像f:这样的流体标签,因为您可以使用CDATA(流体变量也可以工作)。 例如

   

编写起来并不是很舒服,但它有效并且您拥有Fluid逻辑的优势。

我通常使用data-Attributes。 所以在Fluid你有这样的东西:

 

在JavaScript中,您可以访问以下属性:

 jQuery('div').data('tab'); 

当然,您可以使用任何HTML元素。

不好(但也不比CDATA的东西更难看)但它可以直接在javaScript中使用标记符号流体。 在{}括号外,您当然可以直接访问流体变量。 在括号内,您可以使用任何流体标签包裹流体变量。

所以下面的所有例子都有用……

  

我做了类似的事情,对于值,只需添加{settings.mySettingName} TypoScript变量或您拥有的任何数据

 function getHiddenSettings(className) { var settings = {}; $.each($(className), function (index, input) { if (input.dataset.type === "integer") { settings[input.name] = parseInt(input.value) || 0; } else if (input.dataset.type === "boolean") { settings[input.name] = !!(parseInt(input.value) || input.value === "true") } else if (input.dataset.type === "string") { settings[input.name] = input.value; } }); return settings; } var settings = getHiddenSettings(".mySettings"); $('pre').html(JSON.stringify(settings, null, 2)); 
     

Interesting Posts