我在集合中有一个json对象,我需要在页面上显示它。
这是我做的:
我先调用helpers template
,然后从集合中获取json对象:
我正在使用coffeescirpt和jade-handlebars,这里是我在coffeescript中的代码:
Template.test.helpers
test: ->
test = Question.find().fetch();
test
当我执行Question.find().fetch()
时,在控制台中会发生以下情况:
QuestionData: Object
question1: "How many kids do I have ?"
question2: "when will i die ?"
question3: "how many wife do i have ?"
question4: "test"
__proto__: Object
_id: "w9mGrv7LYNJpQyCgL"
userid: "ntBgqed5MWDQWY4xt"
specialNote: "Rohan ale"
当我通过以下方式调用模板时,现在在玉石中:
template(name="hello")
.test {{QuestionData}}
我只能看到[object] [object]
。要查看问题1,问题2我必须执行以下操作:
template(name="hello")
.test {{QuestionData.question1}}, {{QuestionData.question2}}
如何在不执行{{QuestionData.question1}}
...
提前谢谢!!!
答案 0 :(得分:2)
您可以在循环中动态组合字段名称。
b = { q1: 'a1', q2: 'a2', q3: 'a3' };
for (x=1;x<=3;x++) { console.log( b[ 'q' + x ] ) }
话虽如此,这里有很多似乎是对我的误解。我退一步说你应该考虑每个mongo文档存储一个问题。这为您提供了最简单的流星数据。或者,将多个问题存储在数组中:
test = {
questions : [
"How many kids do I have ?"
"when will i die ?"
"how many wife do i have ?"
"test" ] ,
userid: "ntBgqed5MWDQWY4xt",
specialNote: "Rohan ale"
}
当您考虑如何存储答案,对问题进行排序等时,问题就出现了。可能是一个名为问题的集合,其中一个字段可能称为sortOrder,一个称为标记的字段等。
你是如何通过这种方式获取调用模板的,而不是将它们作为路由器为你管理的html文件?
答案 1 :(得分:2)
而不是仅使用Questions.find()。fetch()返回json对象,您可以添加另一个步骤将数据放入如下数组中:
test = function() {
var temp = [];
for (item in Questions.find().fetch()) {
temp.push(item);
};
return temp;
};
return test;
(抱歉不写咖啡脚本,我不知道语言抽象)
答案 2 :(得分:2)
要回答你关于如何做的问题,你可以做这样的事情(在JS中,抱歉,不是咖啡章节):
Template.Questionnaire.questions = function () {
var questions = [];
_.each(Object.keys(this), function (field) {
if(/^question.+/.test(field)) {
questions.push({ label: field, question: this[field]});
}
});
return questions;
};
然后在模板中:
<template name="Questionnaire">
{{#each questions}}
<label>{{label}}</label>
<span>{{question}}</span>
{{/each}}
</template>
这样的事情。但我同意Jim Mack的意见,你应该把它存放在一个数组中。
答案 3 :(得分:0)
像JIm Mack一样发布,将你的收藏保存在一个数组中 首先在coffeescript中将这些问题插入数组:
x = document.getElementById('question-form')
length = x.length
i = 0
question = []
while i< length
aaa = x.elements[i]
question.push
questions: aaa
i++
然后因为你使用的是Jade-handlebars,你需要注册助手 在您的玉文件中执行这些
{{#each arrayify myObject}}
{{#each this.name}}
p {{questions}}
{{/each}}
{{/each}}
arrayify
和myObject
是车把助手。然后在你的coffeescript
Handlebars.registerHelper "arrayify", (obj) ->
result = []
for temp in obj
userQuestion = temp.question
result.push
name: userQuestion
return result
Template.templatename.myObject = ->
temp = []
for item in Question.find().fetch()
temp.push item
return temp
希望这些能够奏效。