Harp服务器,Jade和JSON循环,错误:无法读取属性"长度"未定义的

时间:2015-02-17 14:01:44

标签: json pug harp

这是nav.jade文件

each link in data
h5.home-link: a(href="#{ url }")

这是我的data.json文件

{
      "links": [
        { "url": "index.html", "pg-title": "Home" },
        { "url": "Wooden_Wall_Panelling.html", "pg-title": "Wooden Wall Panelling" },
        { "url": "Wooden_Partitioning.html", "pg-title": "Wooden Partitioning" },
        { "url": "Wardrobe_MDF_Shutters.html", "pg-title": "Wardrobe MDF Shutters" },
        { "url": "MDF_Ceiling_Patterns.html", "pg-title": "MDF Ceiling Patterns" },
        { "url": "Wooden_Grills.html", "pg-title": "Wooden Grills" }
     ]
}

错误(当Jade尝试编译文件时):

  

无法读取未定义的属性“长度”。

错误指向第一行,即数据中的每个链接。

我在这里做错了什么?

我正在使用Harp Server。

1 个答案:

答案 0 :(得分:1)

首先,确保它是_data.json文件,前面有下划线。然后,您的nav.jade文件应如下所示:

each link in public._data.links
  h5.home-link: a(href="#{ link.url }") #{ link["pg-title"] }

如果您将pg-title文件中的title更改为_data.json,则还可以使语法更清晰:

each link in public._data.links
  h5.home-link: a(href="#{ link.url }") #{ link.title }

如果需要,您也可以删除字符串插值:

each link in public._data.links
  h5.home-link: a(href=link.url)= link.title

还有更多关于metadata in Harp here的信息。如果您正在调试并想要查看Harp中所有元数据的可用性,那么暂时显示整个公共_data对象会很有帮助:

pre: code= JSON.stringify(public._data, 0, 2)