【问题标题】:Meteor - change helper collection sort order after renderingMeteor - 渲染后更改助手集合排序顺序
【发布时间】:2013-04-29 22:32:11
【问题描述】:

在 Meteor 中,我希望更改在循环内动态呈现的集合的顺序:

Template.chartPage.helpers({

    employee:function(){

        sortArr = [];
    var timePeriod = Session.get("period");
    var currentPage = Session.get("current_page");
        sortArr[currentPage+'.'+timePeriod] = "asc";
        return EmployeeCollection.find({}, sortArr).fetch();
    },
});

HTML:

{{#each employee}}
    {{first_name}}
{{/each}}

我希望当periodcurrent_page 的会话变量发生变化时,帮助程序中的排序顺序也会发生变化——会话变量会更新,但模板不会重新呈现为排序。

【问题讨论】:

    标签: meteor handlebars.js


    【解决方案1】:

    在meteor中,数据库(目前)基于mongodb。升序为1,降序为-1。您的最终数组必须类似于:

    return EmployeeCollection.find({}, {sort : {number: -1, size: 1} })
    

    应该为您提供以下带有numbersize 字段的订单(每一行都是一个文档)。

    { number : 5, size: 1, _id: ...}
    { number : 4, size: 2, _id: ...}
    { number : 3, size: 3, _id: ...}
    

    有关如何使用 mongodb 订购的更多详细信息,请访问:http://docs.mongodb.org/manual/reference/method/cursor.sort/

    另一方面,当将光标返回到模板助手时,您不必使用fetch()。 Meteor 将自动解析它,而不必将它作为一个数组(带有 fetch)进行遍历

    只要遵循此结构,您就可以使用Session 构建排序查询。只要您更改 Session 哈希,订单就会自动更改并重新呈现。

    【讨论】:

      猜你喜欢
      • 2014-04-20
      • 1970-01-01
      • 2015-07-13
      • 1970-01-01
      • 2016-09-15
      • 2012-07-08
      • 2019-02-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多