我正在制作一个用户可以提交问题的网络应用程序,任何人都可以回答。
我刚刚收到了回答(评论)功能,但当您回答一个问题时,答案会显示在所有问题模板上。我怎样才能让它出现在他们输入的问题上。
用于回答的JS代码:
Template.question.events({
'click #submit-answer': function(e,t) {
e.preventDefault();
var answer = t.find("#answer-input").value;
Answers.insert({
answer: answer,
createdAt: new Date(),
owner: Meteor.user(),
username: Meteor.user().username
});
}
});
Template.question.helpers({
Answers: function() {
return Answers.find({}, {sort: {createdAt: -1}});
}
});
我的HTML:
{{#each Answers}}
{{> answer}}<br />
{{/each}}
答案 0 :(得分:0)
您可以使用类似的内容来关联问题和答案:
Template.question.events({
'click #submit-answer': function(e,t) {
e.preventDefault();
var answer = t.find("#answer-input").value;
Answers.insert({
answer: answer,
createdAt: new Date(),
owner: Meteor.userId(),
username: Meteor.user().username,
questionId: this._id
});
}
});
Template.question.helpers({
Answers: function() {
return Answers.find({questionId: this._id}, {sort: {createdAt: -1}});
}
});
请注意,我已将owner
更改为userId中的take,而不是整个user
对象。
答案有一个questionId
字段,它在Answers
助手的选择器中使用。
如果答案仅在与问题相关时才有意义,您可以将它们作为子文档直接嵌入question
个对象中。
不这样做有一个缺点,它需要你创建一个反应性连接,目前没有一个有效和规范的实现。