Node、Express、Swig 模板 - HTML 属性中的变量

Node, Express, Swig Template - Variable in HTML attribute

我正在使用 http://paularmstrong.github.io/swig/ 作为 Node/Express 应用程序的模板引擎。

我可以很好地将数据传递到我的模板中,但我在使用变量时遇到问题。

我有:

{% for person in people %}
    <input type="radio" name="id" value="{{ person._id }}" id="id_123" /> <label for="id_123">{{ 'id = ' + person._id }}</label><br />
{% endfor %}

people对象没问题,循环正常。但是您会注意到我尝试使用 person._id 两次 - 第一次不起作用,第二次起作用。

value="{{ person._id }}"
// value="[object Object]"

<label for="id_123">{{ 'id = ' + person._id }}</label>
// <label for="id_123">id = 568bc95f317e30e813541ab0</label>

为什么在 HTML 属性中尝试使用 person._id 时得到 [object Object],然后在 person._id 中使用 person._id 时得到正确的值=30=] 标签..?

对,person._id 实际上是猫鼬 ObjectId,现在我明白了。但是当我 console.log 它时,它显示一个字符串。

无论如何,只要做 '' + person._id 就可以满足我的需要。

我认为您需要为此目的使用波浪号:

{{ 'id = ' ~ person._id }}

person._id 是一个猫鼬对象,它有自己的属性。因此,如果您在 swig 模板中使用 person._id,它会将其视为一个对象。通过执行 'id = ' + person._id,它在内部将其转换为 person._id_toString()

尝试使用:

value={{ person._id.toString() }} if you want _id to be string