jade模板里面的javascript函数执行

 王素维060615 发布于 2023-02-06 13:14

我是nodejs的新手,并尝试为html内容创建一个jade文件myfile.jade:以下是该文件的内容:

extends layout
block content
   script
     function capitalize(s) { 
       console.log("Testing js exec");
       return s.charAt(0).toUpperCase() + s.slice(1); 
     };
  table
    - each item in list
      tr
        td
          a(href="/collection/#{item.name}") #{capitalize(itemName)}

但是,在运行它时会引发以下错误:

Error: mweb/views/collections.jade:8
    6|   script
    7|     function capitalize(s) { 
  > 8|       console.log("Testing js exec");
    9|       return s.charAt(0).toUpperCase() + s.slice(1); 
    10|     };

unexpected text ;

如果我删除console.log,它会抛出错误说:

TypeError: mweb/views/collections.jade:18
  > 18|             a(href="/collection/#{item.name}") #{capitalize(itemName)}

据我所知,在jade编译期间调用了大写,并且该函数不可用,因为脚本标记也被编译到html中.在a)服务器端或b)客户端评估此呼叫的最佳方式是什么?

谢谢

2 个回答
  • 你需要在jade的范围内定义函数,而不是在你生成的JS中定义:

    block content
       -  function capitalize(s) { return s.charAt(0).toUpperCase() + s.slice(1); };
      table
        - var list = ['one', 'two']
        - var itemName = 'test test'
        - each item in list
          tr
            td
              a(href="/collection") #{capitalize(itemName)}
    

    但最好将它放在模板之外并将引用传递给helpers对象

    2023-02-06 13:15 回答
  • 我知道这很老了,但是当你在玉器中声明一个函数时,你需要这样做

    script.
    

    script
    

    这个时期有所不同,并且允许jade接受它实际上是一段代码,而不是HTML.

    2023-02-06 13:16 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有