Swig(node.js)包含一个文件并传递一个对象

tur*_*rik 4 node.js swig-template

我正面临这个问题.

我有一个包含另一个这样的页面:

的index.html

{{ set pets = { pets : petsObject } }}
{{ include pets.html }}
Run Code Online (Sandbox Code Playgroud)

petsObject就是这样的对象

petsObjects: [
{ name : "cat" },
{ name : "dog" }
]
Run Code Online (Sandbox Code Playgroud)

当我尝试渲染页面时,我得到一个空白页面,只有这个:

[对象]

我不知道发生了什么:(

提前致谢!

Jon*_*ski 9

似乎你需要使用:

{% include pets.html with pets %}
Run Code Online (Sandbox Code Playgroud)

根据文件include:

默认情况下,本地声明的上下文变量不会传递给包含的模板.

还建议性能only在包含的术语后使用关键字,如下所示:

{% include pets.html with pets only %}
Run Code Online (Sandbox Code Playgroud)

除此之外,它取决于pets.html你没有包括在内的内容.但是,请确保您尝试输出name:

{% for pet in pets %}
  {{ pet.name }}
{% endfor %}
Run Code Online (Sandbox Code Playgroud)

或者使用过滤器json_encode()来格式化它:

{% for pet in pets %}
  {{ pet|json_encode }}
{% endfor %}
Run Code Online (Sandbox Code Playgroud)

尝试输出Objects本身只会产生[object Object]:

new Object().toString() === "[object Object]"
Run Code Online (Sandbox Code Playgroud)