你能在脚本中渲染swigjs吗

Can you render swigjs inside scripts?

本文关键字:swigjs 脚本      更新时间:2023-09-26

我正在为我的一个网站使用nodejs+express+swigjs,结果被卡住了。我有一个<select>,它包含由传递给模板的变量填充的<option>。选择一个选项后,我想在<script>中找到该选项,并在页面的其他地方使用它。

你能用swig做这个吗?我查阅了他们的所有文档,但没有找到允许这种情况发生的过滤器/选项/标记。我很想看到一个例子。谢谢

编辑:这就是我要做的。

我的控制器使用以下指令渲染模板:

res.render('pages/edit.html', {
    page: res.locals.page,
    content: results,
    media: media,
    directives: directives
});

在我的模板中,我想做以下事情:

$('#addpiece').click(function(event){
    var jsoned = {{ media }};
    console.log(jsoned);
});

media是一个对象数组。

但无论我如何过滤数据,它都不会在不发生javascript错误的情况下通过。

使用json过滤器,您就应该设置好了!

$('#addpiece').click(function(event){
    var jsoned = {{ media|json }};
    console.log(jsoned);
});

{{ media }}需要生成正确的javascript代码。它不可能只是一个物体。尝试将它从服务器端转换为JSON,然后通过客户端javascript读取。

我也遇到了同样的问题,添加"safe"而不是"json"就解决了。

    $('#addpiece').click(function(event){
    var jsoned = {{ media|safe }};
});

其中数组类似于:

media = [ [ 'a1', 'b1', 'c1' ],  [ 'a3', 'b2', 'c2' ] ]