如何更新Meteor中的值?

时间:2014-02-27 11:55:04

标签: javascript meteor

最初我显示3个人的信息。之后,当点击按钮然后将3个人的信息更改为另一个。我没有,但信息没有变化。所以请看下面的代码一次,并建议我该怎么办?

Html代码:

  {{#each patientInfo}}

         City: {{City}}<br>
         State: {{State}}<br>
        Country: {{Country}}<br>
       ZipCode: {{ZipCode}}<br>
      PhoneNo: {{PhoneNo}}<br>

 {{/each}}  

Js代码:

 Template.userlist.patientInfo = function () 
    {
       //here  startIndex and endIndex are changed when ever clicks button so how to update every time based on the click event
      records =  User.find().fetch();
      return records.slice(startIndex,endIndex);

    };

 //Here Changes the startIndex & endIndex based click events 
Template.userlist.events
 ({
    'click .nostoIndex': function (e,t)
     {
      if (typeof console !== 'undefined')
      e.preventDefault();
      startIndex = e.target.innerHTML * 3;
      endIndex = startIndex + 3;
      Template.userlist.patientInfo();
     }
 });

1 个答案:

答案 0 :(得分:1)

问题是,startIndexendIndex可能不是被动数据源,因此如果任何变量发生变化,records.slice(startIndex,endIndex);的结果将不会重新计算,即使您的代码是在反应性上下文中(模板助手)。

您可以做的是通过手动跟踪使用它的所有计算或仅使用会话变量之类的反应性数据源来使变量自行反应。在您的情况下,第二个选项更加简单和充分。

例如:

...
Session.set('startIndex', e.target.innerHTML * 3);
...

...
return records.slice(Session.get('startIndex'), Session.get('startIndex') + 3);
...