在 Jade 中连接变量

Concatenating variables in Jade

.Contents
        -for(var i = 1; i < length; i++)
          .QuestionFrame
            =(i+1) + ') ' + ti.FAQ_QUESTION
          .AnswerFrame
            =ti.FAQ_DESCRIPTION

在此代码中,我试图使变量看起来像 t1.FAQ_QUESTION、t2.FAQ_QUESTION、t3.FAQ_QUESTION 等。我不知道如何连接 t 和 i 来创建一个变量。

this answer to a question about using dynamic variable names in javascript, all variables declared in the global context (outside of a function context), can be accessed as properties of the Global object. And because they're accessible as properties, you can use concatenation within bracket notation所述。

需要指出的是,上述答案中给出的示例适用于在 浏览器 中运行的 javascript。 javascript 在浏览器中的全局对象是 window 对象。

但是,Pug 在 Node 中运行,而不是在浏览器中运行。 This answer to a different question about What is the node.js equivalent of window[“myvar”] = value? 注意到 Node 中的 Global 对象是 global.

所以你应该可以在 Pug 中做这样的事情:

.Contents
  - for(var i = 1; i < length; i++)
    - let qa = global['t' + i]
    .QuestionFrame= qa.FAQ_QUESTION
    .AnswerFrame= qa.FAQ_DESCRIPTION
.Contents
        each topic in topics
          .QuestionFrame
            =topic.FAQ_ID + ') '
            =topic.FAQ_QUESTION
          .AnswerFrame
            =topic.FAQ_DESCRIPTION
          br

for each loop帮我解决了这个问题!