【问题标题】:why I can not use inline alert() in pug template if calling it from "if condition"?如果从“if 条件”调用它,为什么我不能在 pug 模板中使用内联 alert()?
【发布时间】:2018-07-15 15:07:49
【问题描述】:

我在article 中读到,我可以通过使用 - var = function(...){...} 定义内联函数来使用它们,但是当我编写代码时:

    - var tryit = function tryit(tasks) {alert('will not work')};
    if tasks
          #adiv #{tryit(tasks)}

我收到此错误消息:

if supervisor tryit is not a function

我扫描了所有 pug 文档(当然,那里没有这样的东西!),请告诉我如何使用这种方法,以便我可以进一步处理从客户端服务器发送的变量“任务”。
我的用例是,如果我有一个来自服务器的 json 数组,则进一步处理它并添加 DOM 元素的树结构。然后最后将其附加到 div(id='adiv')。无论如何,我无法弄清楚如何做到这一点,因为当我使用 document.createElement(...) 时,我会收到与上面的 alert(..) 类似的错误。我通过脚本尝试过。但是我不能调用我在脚本中声明的方法。在带有#{myScriptedFunc(...)} 的哈巴狗模板中。
编辑:
更让我吃惊的是:如果我把它改成:

- var tryit = function() {console.log('silence!');};
    if tasks
          #adiv #{tryit()}

不会有错误消息,但输出将在服务器端(在我运行服务器的命令行窗口中),而不是在浏览器中,这意味着该行是在服务器端执行的?但我希望它在客户端运行。在客户端进行这种后处理的方式对我来说仍然是一个谜。

【问题讨论】:

    标签: javascript iteration pug inline


    【解决方案1】:

    警报可以工作,它看起来并不美妙,但它是: if messages !== null each message in messages mixin alertMessage(message) script. debugger; alert(message); +alertMessage(message) else mixin alertMessage() script. debugger; alert('Hey Look i work!'); +alertMessage()

    使用 mixin 将允许您调用类似代码块的函数,您可以将纯 JavaScript 放入其中。

    我想你可以做 if 检查然后把

    脚本。

    标签之后,但是

    混入

    将允许您使用

    遍历您在路由中发送的数组或对象

    res.render('myPage', { 匿名对象 });

    【讨论】:

      【解决方案2】:

      您的变量应该包含函数的“名称”,函数本身应该是匿名的。

      var tryit = function (tasks) {
        alert('will work')
      };
      

      所以var tryit = function tryit(tasks) 变成了var tryit = function(tasks)

      【讨论】:

      • 对不起,这是一个错字,我刚刚更正了它,同样它失败了:“如果主管警报不是一个功能”。我已经卡了一个小时了,请问有什么解决办法吗?
      • 我改的部分是去掉函数后面的名字,我会修改一下
      • 谢谢,我试过了,还是不行,我终于明白这一切都发生在服务器端,所以alert()显然根本不能在那里工作。
      猜你喜欢
      • 1970-01-01
      • 2013-08-03
      • 2012-08-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-05-23
      • 2018-08-09
      • 2016-12-29
      相关资源
      最近更新 更多