2015-11-03 79 views
0

我的项目是这样的:检索EJS模板本地JSON文件数据

views/ 
    layout.ejs 
data/ 
    US-states.json 
public/ 
    index.html 

美国states.json看起来像这样

{ 
    "DC": "District of Colombia", 
    "NY": "New York", 
    etc... 
} 

我怎么能拉这个JSON数据到layout.ejs呈现像这样的循环中的一些div?

<div>DC: District of Colombia</div> 
<div>NY: New York</div> 

我想是这样的,但我无法使用Google的解决方案:

var data = JSON.parse('./../data/US-states.json') 
<% for(var p in data) {%> 
    <div>p: data[p]</div> 
<% } %> 
+0

你的模板不应该负责获取文件! – Mathletics

+0

@Mathletics这个抽象的例子并不是100%反映我正在进行的项目;我需要将数据导入此组件,然后由主布局文件进行此操作。无论如何,我并不熟悉EJS的最佳实践。 –

+0

我认为这是[XY问题](http://meta.stackexchange.com/questions/66377/what-is-the-xy-problem),我同意@Eleanore的回答 – Mathletics

回答

3

你不应该从视图中检索数据。因此,当您在后端检索到它时,您将表示数据的JavaScript对象(如您在问题中引用的那样)传递给业务层的EJS。我不知道你用作后端框架。例如,当使用的NodeJS:

response.render("yourEJS", {data: yourObject}); 

然后,在你看来,你通过JavaScript遍历对象:

<% for (aProperty in data) { %> 
    <div> <% aProperty %>: <%data[aProperty]%> </div> 
<% } %>