我有这样的集合:
我想以object.questions.teema为例进行迭代。
我有帮手:
Template.game.helpers({
theGame: function() {
var theGame = Game.findOne({_id:"LhQmaZKW8eJNenyX9"})
console.log(theGame)
return theGame
}
});
和模板:
<template name="game">
{{#with theGame}}
{{#each theGame.questions}}
{{teema}}
{{/each}}
{{/with}}
</template>
但它不起作用,模板有什么问题?
答案 0 :(得分:0)
theGame.questions
是一个包含teema
键的对象数组的数组(您可以迭代)。因此,您仍需要迭代二级数组,或者在最终到达具有teema
属性的对象之前定义该数组中的特定项。
可能是这样的:
{{#with theGame}}
{{#each questions}}
{{#each this}}
{{this.teema}}
{{/each}}
{{/each}}
{{/with}}
但这取决于你为什么首先拥有这些2级数组。
答案 1 :(得分:0)
{{teema}}
应该是什么?
无论如何,正如您从console.log语句中看到的那样,{{theGame.questions}}会返回另一个数组。但该数组返回对象。使用Blaze真的很难查询。
更好的解决方案是将其展平,以便您的数据形状如下:
questions: [
{
a: 'asdfkjah',
level: 'askdjfhal',
q: 'asdkfh',
teema: 'asdkfjh'
vaartus: 100
},
{
...
}
]
这样,您就没有嵌套在数组中的数组。这将允许你:
{{#with theGame}}
{{#each theGame.questions}}
{{this.teema}}
{{/each}}
{{/with}}
答案 2 :(得分:0)
'#each theGame.questions'在#with中不起作用,因为你可以直接访问'theGame'对象。
关键是当你试图在#with中获取theGame对象时,它将返回undefined,因为'theGame'对象没有thegame属性,你要在#with块中访问它。
<template name="game">
{{#with theGame}}
{{#each questions}}
//Thie #each because you have nested array. As I can see in your console log.
{{#each this}}
{{teema}}
{{/each}}
{{/each}}
{{/with}}
</template>