javascript中如何加载freemark指令

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了javascript中如何加载freemark指令相关的知识,希望对你有一定的参考价值。

参考技术A freemarker运行在服务器上,javascript运行在客户端浏览器上。
freemarker的模板、宏、函数指令等等都在服务器上。等到javascript在客户电脑的浏览器中解释执行时,之前在服务器上的freemarker早处理完了(服务器处理完成才有response响应包括javascript脚本代码本身发回到浏览器去)。
所以你说javascript怎么加载freemarker指令?就像用javascript可以调用EL表达式函数吗?
参考技术B 你是说怎么在javascript代码里面使用freemarker吗?
如果是这个问题的话,貌似用法跟不在javascript里面是一样的用法。

如何使用 ChartJS 和 FreeMarker 执行 JavaScript 函数?

【中文标题】如何使用 ChartJS 和 FreeMarker 执行 JavaScript 函数?【英文标题】:How to execute a JavaScript function with ChartJS and FreeMarker? 【发布时间】:2021-11-05 09:31:21 【问题描述】:

我正在尝试在 chartjs 饼图中执行 JavaScript 函数,但使用的是 FreeMarker,这有点困难。

我有以下 javaScript 函数:

function randomColor()
        var hue = Math.floor(Math.random() * 360);
        var color = 'hsla(' + hue + ', 70%, 70%, .8)';
        return color;

我想填充chartjs属性“背景”:

"backgroundColor": [
    <#list object.array as something>
        "$randomColor()",
    </#list>       
]]

但它不起作用......

如何将此函数包含到我的chartjs中?

我使用的是 chartjs 2.9.3 版本。

【问题讨论】:

【参考方案1】:

删除"$",以便在浏览器中调用该函数。 FreeMarker 语句(如 $...)在服务器上解析,这为时过早(那里没有运行 JavaScript)。

【讨论】:

当我删除它时,我得到一个包含函数名称的列表,但不是这个函数返回的值。换句话说,我得到一个“randomColor()”列表。 @Victor 我假设 "backgroundColor": [ ... ] 是 JavaScript。在这种情况下,您应该在浏览器的源视图中看到randomColor()-s(不带引号),但实际运行时值应该具有随机颜色。

以上是关于javascript中如何加载freemark指令的主要内容,如果未能解决你的问题,请参考以下文章

FreeMarker--03---常见指令运算符

freemarker 自己定义指令

Freemarker自定义指令和方法

Freemarker自定义指令和方法

如何使用 ChartJS 和 FreeMarker 执行 JavaScript 函数?

FreeMarker自定义指令--代码实现