使用Meteor& amp;显示对象的所有或选定属性。把手

时间:2014-02-25 20:39:15

标签: javascript meteor handlebars.js

我尝试使用meteor制作jobboard app。我能够从数据库中获取数据并将其显示在模板中。但为此我现在正在检索模板中的每个属性。有什么方法可以一次显示全部或部分属性。

Template.postSubmit.events({
    'click #submit': function(event){
        var job = {};
        job.jobtype = $('input[name ="jobtype"]:checked').val();
        job.category = $('input[name="category"]:checked').val();
        job.location = $('input[name="location"]').val();
        job.relocationAssistanceAvailable = $('input[name="relocationAssistanceAvailable"]')[0].checked;
        job.description = $('#jobDescription').val();
        }
});

//****Return data***//
Template.postDisplay.posts = function(){
    return Jobs.find();
}

//**My template where I am retriving data**//
<template name="postDisplay">
    <div class="container">
        {{#each posts}}
            <li>{{location}}</li>
            <li>{{jobtype}}</li>
            <li>{{category}}</li>
            <li>.......</li>
        {{/each}}
    </div>
</template>   

有人可以帮助我显示所有这些项目,而不必像以上那样进行检索。 感谢提前.... !!!!

2 个答案:

答案 0 :(得分:1)

如果您没有专门声明每个文档属性以及在html中将如何呈现它的位置/方式,那么您将如何放置它们并设置它们的样式?例如,如果您希望在不同的行,段落或列表项中显示每个属性,就像您正在做的那样?

话虽如此,获得完整属性的唯一方法是作为JSON表示,在http://docs.meteor.com/#ejson_stringify

中描述
Template.postDisplay.posts = function(){
  return _.each(Jobs.find().fetch(), function(postDocument) {
    return EJSON.stringify(postDocument);
  });
}

<template name="postDisplay">
  <div class="container">
    {{#each posts}}
      {{.}}<br/>
    {{/each}}
  </div>
</template>  

EJSON还有一个分隔符选项,您可以通过它来实际模仿li元素

Template.postDisplay.posts = function(){
  return _.each(Jobs.find().fetch(), function(postDocument) {
    return EJSON.stringify(postDocument, {'string': '</li><li>'});
  });
}

<template name="postDisplay">
  <div class="container">
    {{#each posts}}
      <li>{{.}}</li>
    {{/each}}
  </div>
</template>  

附注:您正在打印<li>个项目,但不会将它们包含在<ul>中,因此会显示为单个列表。事实上,每个职位都是不同的名单。

答案 1 :(得分:1)

Handlebars可以轻松地遍历数组,就像您可能已经看到{{each}}帮助器一样。

你想要的是迭代对象键。为此,您需要register a Handlebars helper

无论如何,迟早你会想要以特定的方式显示某些字段,即使现在它们看起来都像字符串。例如,您可能希望将该位置超链接到Google地图网址,或将该类别超链接到应用中列出该类别中所有作业的页面。

这就是为什么迭代对象键并不常见,我建议在<li>中包含每个字段并继续使用你的应用程序。

PS:“不需要大喊...... !!!!” :)