【问题标题】:Meteor template helper executed for each session object为每个会话对象执行的 Meteor 模板助手
【发布时间】:2015-08-05 10:59:41
【问题描述】:

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

这是我的助手:

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 响应。但是助手被多次执行,现在因为它看不到参数,所以它从会话对象中获取值。

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

【问题讨论】:

    标签: meteor


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 2014-01-30
      • 2016-03-02
      • 1970-01-01
      • 2015-12-17
      • 2015-01-06
      • 1970-01-01
      • 2015-09-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多