循环遍历 Express 应用程序中未显示的虚拟数据
Loop through dummy data not showing up in Express app
我的 Express 应用程序中有这个车把模板文件:
{{#each data}}
<article class="id-{{this.id}}">
<h1><a href="/journal/{{this.url}}">{{this.title}}</a></h1>
<p>{{this.body}}</p>
</article>
{{else}}
<p class="empty">No content</p>
{{/each}}
这是路由器:
router.get('/', function(req, res, next) {
res.render('blog-index', {
layout: 'main',
title: 'Journal',
data: articles
});
});
如果我将此 javascript 循环用于虚拟数据,它会毫无问题地显示内容:
var articles = [{
id : '0',
url : 'foo',
title: 'Foo',
body: 'some foo bar',
category: 'foo',
tags: [
'foo'
]
}, {
id: '1',
url: 'foo-bar',
title: 'Foo bar',
body: 'more foo bar',
category: 'foo',
tags: [
'foo',
'bar'
]
}, {
id: '2',
url: 'foo-bar-baz',
title: 'Foo bar baz',
body: 'more foo bar baz',
category: 'foo',
tags: [
'foo',
'bar',
'baz'
]
}];
但是,如果我使用以下虚拟数据,则不会显示任何内容:
var articles = [{
articles : [{
id : '0',
url : 'foo',
title : 'Foo',
body : 'some foo bar',
category : 'foo',
tags : [
'foo'
]
}, {
id : '1',
url : 'foo-bar',
title : 'Foo bar',
body : 'more foo bar',
category : 'foo',
tags : [
'foo', 'bar'
]
}, {
id : '2',
url : 'foo-bar-baz',
title : 'Foo bar baz',
body : 'more foo bar baz',
category : 'foo',
tags : [
'foo',
'bar',
'baz'
]
}]
}, {
users : [{
name: 'Admin'
}, {
name: 'User'
}]
}];
我将模板文件修改为:
{{#each data.articles}}
<article class="id-{{this.id}}">
<h1><a href="/journal/{{this.url}}">{{this.title}}</a></h1>
<p>{{this.body}}</p>
</article>
{{else}}
<p class="empty">No content</p>
{{/each}}
我做错了什么?
你有两个等级articles
。所以你必须做这样的事情才能开始第二个:
{{#each data.0.articles}}
<article class="id-{{this.id}}">
<h1><a href="/journal/{{this.url}}">{{this.title}}</a></h1>
<p>{{this.body}}</p>
</article>
{{else}}
<p class="empty">No content</p>
{{/each}}
请注意,如果您没有第二个 articles
,则需要在索引两边加上方括号:{{#each data.[0]}}
我的 Express 应用程序中有这个车把模板文件:
{{#each data}}
<article class="id-{{this.id}}">
<h1><a href="/journal/{{this.url}}">{{this.title}}</a></h1>
<p>{{this.body}}</p>
</article>
{{else}}
<p class="empty">No content</p>
{{/each}}
这是路由器:
router.get('/', function(req, res, next) {
res.render('blog-index', {
layout: 'main',
title: 'Journal',
data: articles
});
});
如果我将此 javascript 循环用于虚拟数据,它会毫无问题地显示内容:
var articles = [{
id : '0',
url : 'foo',
title: 'Foo',
body: 'some foo bar',
category: 'foo',
tags: [
'foo'
]
}, {
id: '1',
url: 'foo-bar',
title: 'Foo bar',
body: 'more foo bar',
category: 'foo',
tags: [
'foo',
'bar'
]
}, {
id: '2',
url: 'foo-bar-baz',
title: 'Foo bar baz',
body: 'more foo bar baz',
category: 'foo',
tags: [
'foo',
'bar',
'baz'
]
}];
但是,如果我使用以下虚拟数据,则不会显示任何内容:
var articles = [{
articles : [{
id : '0',
url : 'foo',
title : 'Foo',
body : 'some foo bar',
category : 'foo',
tags : [
'foo'
]
}, {
id : '1',
url : 'foo-bar',
title : 'Foo bar',
body : 'more foo bar',
category : 'foo',
tags : [
'foo', 'bar'
]
}, {
id : '2',
url : 'foo-bar-baz',
title : 'Foo bar baz',
body : 'more foo bar baz',
category : 'foo',
tags : [
'foo',
'bar',
'baz'
]
}]
}, {
users : [{
name: 'Admin'
}, {
name: 'User'
}]
}];
我将模板文件修改为:
{{#each data.articles}}
<article class="id-{{this.id}}">
<h1><a href="/journal/{{this.url}}">{{this.title}}</a></h1>
<p>{{this.body}}</p>
</article>
{{else}}
<p class="empty">No content</p>
{{/each}}
我做错了什么?
你有两个等级articles
。所以你必须做这样的事情才能开始第二个:
{{#each data.0.articles}}
<article class="id-{{this.id}}">
<h1><a href="/journal/{{this.url}}">{{this.title}}</a></h1>
<p>{{this.body}}</p>
</article>
{{else}}
<p class="empty">No content</p>
{{/each}}
请注意,如果您没有第二个 articles
,则需要在索引两边加上方括号:{{#each data.[0]}}