Meteor - 渲染后更改帮助器集合排序顺序

时间:2013-04-29 13:48:47

标签: meteor handlebars.js

在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的会话变量发生变化时,帮助程序中的排序顺序也会发生变化 - 会话变量会更新,但模板不会被重新呈现一种。

1 个答案:

答案 0 :(得分: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将自动解析它,而不必将其作为数组(带有提取)

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