【问题标题】:Meteor collection not displaying流星集合不显示
【发布时间】:2016-01-13 18:19:22
【问题描述】:

我正在尝试显示我的 Orders 集合。 Orders 集合架构具有从 Items 集合填充的选择字段。

我似乎无法让 Orders 集合显示在我的管理员模板上。我已经确认我正在使用 Mongol 发布到收藏集,并且我没有在控制台中收到任何错误。我也尝试在表格中显示它,但没有成功。

有什么想法吗?我还在学习流星,已经盯着这个屏幕看了好几个小时了..现在可能需要一些新鲜空气,稍后再看看......

/collections/orders.js

Orders = new Mongo.Collection("orders");
    Orders.attachSchema(new SimpleSchema({
      station: {
        type: String,
        label: 'Station',
        max: 2,
      },
      itemselect: {
        type: [String],
        label: 'Items',
        optional: false,
        autoform:{
          type: "select",
          options : function()  {
            return Items.find().map(function (c) {
              return {label: c.name , value: c._id}
            })
          }
        }
      }
    }));

/templates/admin.html

<template name="ordersTable">
  <div class="admin">
    <div class="panel panel-default">
      <div class="panel-heading">
       <h4 class="panel-title">
         <a data-toggle="collapse" href="#collapse2">
           <button type="button" class="btn btn-default navbar-btn">Orders</button>
         </a>
       </h4>
     </div>
     <div id="collapse2" class="panel-collapse collapse">
       <div class="panel-body">
         <ul>
           {{#each orders}}
             <li>{{> station}}</li>
           {{/each}}
         </ul>
       </div>
       <div class="panel-footer">
         {{> addOrderFormAdmin}}
       </div>
     </div>
    </div>
  </div>
</template>

/templates/admin.js

Template.dashboard.rendered = function() {
  return Orders.find();
};

**应该是一个帮手..所以改为:

Template.ordersTable.helpers({
  orders: function () {
    return Orders.find();
  }
});

插入订单

<template name="addOrderFormAdmin">
  {{> autoformModals}} <!-- this is required for this modal to open -->
    {{#afModal class="btn btn-primary" collection="Orders" operation="insert"}}
      Add New Order
    {{/afModal}}
</template>

【问题讨论】:

    标签: meteor meteor-autoform meteor-collection2


    【解决方案1】:

    dashboard rendered 回调中的代码没有任何意义。我想你想为你的ordersTable 模板创建一个helper function

    Template.ordersTable.helpers({
      orders: function () {
        return Orders.find();
      }
    });
    

    此外,请注意 Template.myTemplate.rendered 在 Meteor 版本 1.0.4.2(及更高版本)中已弃用,请改用 Template.myTemplate.onRendered

    【讨论】:

      【解决方案2】:

      如果您已删除自动发布包,请检查发布和订阅。首先,看看您是否可以通过控制台(在网页上,而不是在命令行上)访问该集合。其次,查看您的帖子是否更新了集合(为此,您可以在服务器运行时通过键入“meteor mongo”使用命令行,或者只需下载 Robomongo)。

      【讨论】:

      • 我启用了自动发布和不安全。我可以通过浏览器 devtool 控制台访问集合,并在 Orders.find().fetch() 时查看集合对象我仍然可以通过 Mongol 访问集合。
      • 我也可以通过控制台中的 db.orders.find() 访问集合对象。
      • 您是否有适当的辅助函数来在 .templates/admin 中显示“订单”。我的意思是像“return Orders.find()”这样的普通助手
      • 没有。这就是我所缺乏的。我有 'return Orders.find() 但在我的 Template.dashboard.rendered 中,而不是在下面的 Matthias 提到的 Template.ordersTable.helpers 中。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-02-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-11-30
      相关资源
      最近更新 更多