获取对象时应该是一个字符串

时间:2015-02-13 08:32:51

标签: meteor

我有这个客户端代码将一些数据推送到名为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是一个文本输入字段。

2 个答案:

答案 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>