你能帮帮忙吗,这太奇怪了..
我有一个自定义类,它包含多个属性,其中一个是数组数组。
我知道数据结构是好的,因为我可以将它转储到console.log中,而app.send()会在我的浏览器中生成一个格式良好的数组。
奇怪的是,当我尝试呈现它时,数据浏览器是正确的,它不再是数组的数组,它根本不是一个数组,而是一个逗号分隔的字符串……
所以从
[[day,1,2,3],[day,1,2,3],[day,1,2,3]]至
day,1,2,3,day,1,2,3,day,1,2,3就连外部数组也不见了。
有什么想法吗?是不是我错过了什么场景?
提前谢谢你,鲍勃。
使用一些代码更新..app.js
app.set('view engine', 'hbs');
app.engine('hbs', hbs({
extname: 'hbs',
defaultLayout: 'layout',
layoutsDir: __dirname + '/views/layouts/',
partialsDir: __dirname + '/views/partials/',
helpers:{
json: function (context){return JSON.stringify(context); }
}
}));
app.set('views', path.join(__dirname, 'views'));index.js
class myClass{
Name = '';
Stats = [];
constructor(name){
this.Name = name;
}
}
router.get('/', function(req,res,next){
let tmp = new myClass('Dan');
let i;
for(i = 0; i < 4; i++){
tmp.Stats.push('day',1,2,3);
}
console.log(tmp.Stats);
// res.send(tmp);
res.render('index', { title: 'Test Data', data: tmp });
});结果如上所述,console.log和res.send都遵循数组结构,但render将其剥离为字符串。?
幸运的是,数组的大小是固定的,所以我可以在一个块中重新构建它,但我宁愿知道我做错了什么,首先导致了这个问题。
谢谢。
发布于 2021-03-01 06:44:00
使用上面的代码,您不是在创建一个数组数组,实际上是在创建一个有16个元素的平面数组。如果你想在每次迭代中推入一个数组,你需要这样做:
for (i = 0; i < 4; i++) {
tmp.Stats.push(['day', 1, 2, 3]);
}在您的模板中,您可以访问数据并执行以下操作:
<% for(let currStat of data.Stats) { %>
<ul>
<% for(let entry of currStat) { %>
<li>
<%= entry %>
</li>
<% } %>
</ul>
<% } %>https://stackoverflow.com/questions/66413261
复制相似问题