为每个会话对象执行的流星模板助手

时间:2015-08-05 01:04:15

标签: meteor

我有一个被多次调用的流星模板助手。帮助器有会话变量,我猜测每个会话对象更改时都会执行帮助。

这是我的帮手:

Template.profile.helpers({
    listOfUsers: function (param1,param2,param3) {

   if(*if param 1/2/3 are not passed as parameters*)
   {
            var param1 = Session.get('param1');
            var param2 = Session.get('param2');
            var param3 = Session.get('param3');
   }
            /*This is the api call to get the data.
            Meteor.call('apiMethpod', param1, param2, param3, function (error, result) {
            if (error) {
                console.log("Error occurred on receiving checks data on server. ", error);
                Session.set('apiData', "");
            } else {
                console.log("Checks data received on client side ");
                Session.set('apiData', result);
            }
            });
        return Session.get('apiData');
    }
});

此助手也是从事件中调用的:

Template.checkImages.events({
    'click .search': function(event){
/*Getting the values for params
var param1 = Session.get('param1');
var param2 = Session.get('param2');
var param3 = "Some value not from session object";
         Template.profile.__helpers.get("listOfUsers")(param1,param2,param3);
    }
});

当事件被触发时,参数将被传递给帮助程序,并且我第一次得到了api响应。但是帮助器多次出现,现在因为它没有看到它从会话对象获取值的参数。

我以某种方式让助手在从事件中调用时只执行一次。

1 个答案:

答案 0 :(得分:0)

您的HTML是否在任何地方引用{{#each listOfUsers}}?这将导致基于3个Session变量的更改的多个更新和响应式更新。您可能希望创建一个具有Session.set('myParams',{param1: value1, param2: value2, param3: value3})的对象的单个会话变量。