显示集合的模板在数据插入后不会自动更新

时间:2015-09-03 03:13:13

标签: javascript meteor

将数据插入集合后,显示集合的模板仅在刷新后显示新添加的数据。我查看了反应变量,但我很难理解如何在这种情况下使用它们。任何见解将不胜感激。

我的代码如下。

模板助手

我根据选择的模板打电话来获取订单,我将结果存储在会话中。我返回要在模板中使用的会话变量

Template.ordersTable.helpers({
orders : function () {
    var orderType = Session.get('currentOrderTemplate');
    var currentUserId = Meteor.userId();

    if(orderType == 3) {
        // Return all orders created by logged in user.
        Meteor.call('getOrders', {}, function(err, data) {
            if(err)
                console.log(err);
            Session.set('orders', data);
        });
    } else {
        Meteor.call('getOrders', {orderType : orderType}, function(err, data) {
            if(err)
                console.log(err);
            Session.set('orders', data);
        });
    }
    return Session.get('orders');
}
});

方法

Meteor.methods({
'addOrder' : function(order) {
    OrderList.insert(order);
    check(order, Object);
},
'getOrders' : function (filter) {
    check(filter, Object);
    return OrderList.find(filter).fetch();
}
});

需要任何其他信息,请告知我们。

感谢。

1 个答案:

答案 0 :(得分:1)

方法调用不是反应式数据源。而且,你正在不必要地努力工作。只需直接在客户端上进行查找:

Template.ordersTable.helpers({
    orders : function () {
        var orderType = Session.get('currentOrderTemplate');
        var currentUserId = Meteor.userId();       
        if (orderType == 3) {
            // Return all orders created by logged in user.
            return OrderList.find({});
        } else {
            return OrderList.find({orderType : orderType});
        }
    }
});

请确保您订阅了OrderList集合。