一梦之殇 2019-12-25 12:12 采纳率: 0%
浏览 498

node.js art-template能不能一个模板,多次渲染

//获取栏目列表
mysql.getLm(function (lmParams) {
lmData = lmParams;
//使用模板替换
// module.exports.lm = template('./index.html', {lm: lmParams});
})

//获取要闻
mysql.getYw(function (ywzParams) {
ywzData = ywzParams;
//module.exports.ywz = template('./index.html', { ywz: ywzParams });
})

var value = [
    {'lm': lmData },
    {'ywz': ywzData}
]
var htmls = template('./index.html', {
    indexData: value
})
module.exports.index = htmls;

<ul>

                        {{each indexData as value}}
                        <li> <a href="http://127.0.0.1:8000{{$value.lm.colName}}">{{$value.lm.colName}}</a></li>
                        {{/each}}


                    </ul>
{{each indexData as value}}
                            {{if $value.ywz.type == '0'}}
                            <dt><a href="http://127.0.0.1/{{$value.ywz.fnUrl}}/{{$value.ywz.artId}}" class="Bold" target="_blank">{{$value.ywz.fnName}}
                            </a></dt>
                            {{else}}         
                            <dd><a href="http://127.0.0.1/{{$value.ywz.fnUrl}}/{{$value.ywz.artId}}" target="_blank">{{$value.ywz.fnName}}</a></dd>
                            {{/if}}
* 1. 1.                             {{/each}}

每次渲染只能渲染一个 还得单独去查询, 我想多次查询 然后一次渲染,才学node,希望各位大佬帮帮忙

  • 写回答

1条回答

  • lshen01 2023-03-17 10:02
    关注

    参考GPT和自己的思路:

    可以通过将多个数据合并到一个对象中,再将这个对象作为模板渲染时的数据源,从而实现一次渲染多个模板的效果。具体实现如下:

    1. 将获取栏目列表和获取要闻的代码合并成一个函数,该函数返回一个包含两个数据对象的数组,代码如下:
    function getData(callback) {
      mysql.getLm(function(lmParams) {
        var lmData = lmParams;
        mysql.getYw(function(ywzParams) {
          var ywzData = ywzParams;
          var data = [
            {lm: lmData},
            {ywz: ywzData}
          ];
          callback(data);
        });
      });
    }
    
    1. 在调用该函数时,将渲染模板所需的数据对象传递给模板引擎进行渲染,代码如下:
    getData(function(data) {
      var html = template('./index.html', {indexData: data});
      module.exports.index = html;
    });
    
    1. 在模板中遍历渲染包含多种数据对象的数组,代码如下:
    {{each indexData as item index}}
      {{if item.lm}}
        // 渲染栏目列表数据
      {{else item.ywz}}
        // 渲染要闻数据
      {{/if}}
    {{/each}}
    

    通过这种方式,可以实现多次查询,同时一次渲染多个模板的效果。

    评论

报告相同问题?

悬赏问题

  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题
  • ¥15 C#算法问题, 不知道怎么处理这个数据的转换
  • ¥15 YoloV5 第三方库的版本对照问题
  • ¥15 请完成下列相关问题!
  • ¥15 drone 推送镜像时候 purge: true 推送完毕后没有删除对应的镜像,手动拷贝到服务器执行结果正确在样才能让指令自动执行成功删除对应镜像,如何解决?
  • ¥15 求daily translation(DT)偏差订正方法的代码
  • ¥15 js调用html页面需要隐藏某个按钮