当前位置: 首页 > 面试题库 >

翡翠模板中的javascript函数执行

闻人鸿飞
2023-03-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)}

据我所知,在玉器编译期间会调用大写,并且该功能不可用,因为script标签也已编译到html中。在a)服务器端或b)客户端评估此调用的最佳方法是什么?

谢谢


问题答案:

您需要在翡翠范围内定义函数,而不是在生成的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对象



 类似资料:
  • 我是新来的javascript/玉。我正试图创建一个简单的例子,在一个玉模板文件中使用甜言蜜语2。当我运行以下内容时,我会收到“帮助我”警报,但当我到达swal线时,我会收到: ReferenceError:未定义swal 应该注意的是,我是在一个基于express/node.js的玩具应用程序中运行它的。通过从代码中复制位置并将它们插入浏览器上的另一个选项卡,我已经验证了sweetalert2.

  • 问题内容: 我对棱角玉和玉都陌生。我想知道角度是否只能与HTML一起使用,还是可以在玉模板中使用相同的角度调用?我只看到有角度的模板与HTML一起使用,还没有在任何翡翠模板中找到它。有可能这样做吗?玉模板中的棱角看起来如何? 问题答案: 是的你可以。它看起来像:

  • 问题内容: 我试图像这样用res渲染加载一些变量: 虽然标题加载良好,但帖子始终显示为undefined …这是我尝试过的一些方法… 并作为一个JavaScript变量 他们都没有工作…您能帮忙吗?提前致谢 问题答案: 尝试

  • 我想知道如果函数的模板参数包括但不限于类的模板参数,如何使函数成为类的朋友并在类外定义函数。 例如,我有以下模板类和模板朋友函数: 如果我编译: 我会得到以下链接器错误:

  • 我有一个模板化的C++类,它也有一个模板化的成员函数。这个成员函数的模板参数以特定的方式依赖于类的模板参数(请参阅下面的代码)。我正在为其模板参数的两个不同值实例化(而不是专门化)该类。一切都在这一点上进行。但是,如果我调用模板化的成员函数,对第一个实例化对象的调用只会编译,而不会编译第二个。似乎编译器没有为模板类的第二次实例化实例化模板化成员函数。我正在使用“g++filename.cpp”编译

  • 如果我没有理解错的话,类模板定义了一个函数,所以当我调用时,编译器有可能进行隐式强制转换,但是在函数模板的情况下,此时没有函数定义,所以隐式强制转换不会发生。 但我不明白为什么编译器不能创建函数定义,然后应用隐式强制转换? 错误是: 在函数“int main()”中:    25:24:错误:调用“test2::add(void(&)(int))”没有匹配函数    25:24:注:候选人是: