一个人怎么能传递从控制器到的jQuery或JavaScript流体变量?
在我的控制器:
public function tabs () {
$this->view->assign('tab', 1);
}
内部流体我会使用变量{标签}但我怎么能传递给JavaScript? 任何帮助,将不胜感激...
一个人怎么能传递从控制器到的jQuery或JavaScript流体变量?
在我的控制器:
public function tabs () {
$this->view->assign('tab', 1);
}
内部流体我会使用变量{标签}但我怎么能传递给JavaScript? 任何帮助,将不胜感激...
在流体模板行为JS是...在大多数情况下可怕的,如果你的JS代码包含您需要包括外部脚本,而不是把脚本视图中的任何大括号。
其原因是流体认为,所有的花括号属于它的范围,所以当你写:
$('#mySelectBox').change(function() {
// functions body code
// next line
// next line
});
流体破坏JS并呈现它只是:
$('#mySelectBox').change(function() Array);
然后最常我用是这样的:
在视图:
<script>var TxMyExtKeyTabNumber = {tab}</script>
<script src="path/to/static/script.js"></script>
在的script.js:
$("#container").val(TxMyExtKeyTabNumber);
如果您需要液标签,如F:你可以使用CDATA(流体变量也工作)。 例如
<script type="text/javascript"><![CDATA[
function initialize() {
var marker = [];
var LatLng;
var queryLatlng = new google.maps.LatLng(]]>{queryLat}, {queryLng}<![CDATA[);
var mapOptions = {
center: queryLatlng,
zoom: 8,
mapTypeId: google.maps.MapTypeId.ROADMAP
};
var map = new google.maps.Map(document.getElementById("tx_gmapplus-map"),mapOptions);
marker['0'] = new google.maps.Marker({
position: queryLatlng,
map: map,
title: "Standort"
});
]]><f:for each="{addresses}" as="address" iteration="it"><![CDATA[
latlng = new google.maps.LatLng(]]>{address.txGmapplusLatitude}, {address.txGmapplusLongitude}<![CDATA[);
]]>marker['{it.cycle}']<![CDATA[ = new google.maps.Marker({
position: latlng,
map: map,
title: ]]>"{address.name}"<![CDATA[
});
]]></f:for><![CDATA[
}
]]></script>
不是真的很舒服写的,但它是工作,你有流体逻辑的优势。
我通常使用的数据属性这一点。 因此,在流体你有这样的事情:
<div data-tab="{tab}"></div>
在JavaScript访问这个属性有:
jQuery('div').data('tab');
当然,你可以使用任何的HTML元素这一点。
不是很好(但也不会更丑那么CDATA的东西),但它可以直接在JavaScript中使用标签标记液。 外括号{}当然你也可以直接访问流体变量。 括号内你可以用任何流体包裹标签流体变量。
因此,所有下面的例子将工作...
<script>
var myGlobal = {fluidVar};
function myFunc(){
var myLocal = <f:format.raw>{fluidVar2}</f:format.raw>
var myLocal2 = <f:if condition="1">{fluidVar3}</f:if>
}
</script>
我做了这样的事情,和值只需添加{settings.mySettingName}
Typo脚本变量或任何数据,您有
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));
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <input type="hidden" class="mySettings" name="closedTimes" value="0" data-type="integer"> <input type="hidden" class="mySettings" name="onlyEmail" value="false" data-type="boolean"> <input type="hidden" class="mySettings" name="serverError" value="Server problem" data-type="string"> <pre></pre>