Node,Express,Swig Template - HTML属性中的变量

时间:2016-01-05 14:52:25

标签: javascript node.js express swig-template

我使用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属性中使用[object Object]时获得person._id,然后在HTML标记内使用person._id后获得正确的值?

3 个答案:

答案 0 :(得分:0)

是的,person._id实际上是一只猫鼬ObjectId,现在对我来说很有意义。但是当我console.log时,它会显示一个字符串。

无论如何,只需按'' + person._id进行操作即可。

答案 1 :(得分:0)

我认为你需要为此目的使用代字号:

server {


  listen 443 default_server ssl;
  server_name example.com;
  # server_name www.example.com; # This is NO NEEDED, only example.com requests arrives
  ssl on; 
  .
  .
}

答案 2 :(得分:0)

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

尝试使用:

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