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
我正在使用 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