我有这个客户端代码将一些数据推送到名为Hours
的集合中,然后将其显示在名为hoursWorked
的模板中
Template.loggedIn.events({
"submit .inputHours": function (event) {
var projectInput = event.target.projectInput.value;
var hoursInput = event.target.hoursInput.value;
Hours.insert({
project: projectInput,
hours: hoursInput,
createdAt: new Date() // current time
});
event.target.hours.value = "";
console.log(project + " - " + hours + " success");
return false;
}
});
Template.hoursWorked.helpers({
hours: function () {
return Hours.find();
}
});
然后html看起来像这样
<template name="hoursWorked">
{{#each hours}}
<h1>{{project}}</h1>
<p>{{hours}}</p>
<p>{{createdAt}}</p>
{{/each}}
</template>
但是我找回了这样的东西:
Option1
[object Object]
Fri Feb 13 2015 00:14:32 GMT-0800 (Pacific Standard Time)
为什么我接收到一个对象,当其余的是字符串时,我怎样才能让它只显示输入的文本值?注意:projectInput
是一个包含多个选项的选择表单,hoursInput
是一个文本输入字段。
答案 0 :(得分:1)
模板助手会覆盖数据上下文中具有相同名称的字段。
<template name="hoursWorked">
{{#each hours}}
<h1>{{project}}</h1>
<p>{{hours}}</p> <!-- here -->
<p>{{createdAt}}</p>
{{/each}}
</template>
标有{{hours}}
的{{1}}仍将引用帮助程序,即使数据上下文中存在<!-- here -->
字段。
最简单的解决方法就是重命名帮助程序:
hours
Template.hoursWorked.helpers({
hoursDocuments: function () {
return Hours.find();
}
});
答案 1 :(得分:0)
可能是因为您仍在引用父级,您需要引用hours.hours
而不是
<template name="hoursWorked">
{{#each hours}}
<h1>{{project}}</h1>
<p>{{hours.hours}}</p>
<p>{{createdAt}}</p>
{{/each}}
</template>
或者您可以更改退货的名称:
Template.hoursWorked.helpers({
hoursWorked: function () {
return Hours.find();
}
});
<template name="hoursWorked">
{{#each hoursWorked}}
<h1>{{project}}</h1>
<p>{{hours}}</p>
<p>{{createdAt}}</p>
{{/each}}
</template>