在事件中调用方法后,如何在流星中重新渲染模板?

时间:2014-12-15 07:01:19

标签: javascript jquery templates meteor render

在我的渲染函数中,更改页面上的一些html,如下所示:

$($($('.round'+nextRound).find('li')[nextMatch]).find('.participant')[currentParticipant]).find('a').addClass('tooltip').html(winnerBox);

我需要在我的一个事件处理程序中撤消该更改:

'click #swear': function(event){
    Meteor.call('submitWinner', winnerInfo, thisCampaign._id, Meteor.user().apiKey, function(error, result) {
        // display the error to the user and abort
        if (error){
            return alert(error.reason);
        }else{
          !RE-RENDER MY TEMPLATE HERE!
          // Session.set('roundUpdated', true);
        }
    });
},

我尝试过使用会话变量等,但我绝对没有运气! 我认为问题是这个模板有3个嵌套每个块:

each round
  ul(class='round#{currentRound} of#{rounds}')
    each match
      li
       each participant

助手看起来像这样:

round: function() {
    // Session.set('updated', (Session.get('updated')+1));
    var tournament = this.tournament.brackets;
    var rounds = tournament.length;
    var results = [];
    tournament.map(function(value, index){
        var currentRound = index + 1;
        results.push({rounds: rounds, currentRound: currentRound, matches: value});
    });
    // console.log("results:", results);
    return results;
},
match: function(){
    // console.log("matches:", this.matches);
    return this.matches;
},
participant: function(){
  // do some calculations here
  return results;
},

为简洁起见,代码有点不完整,但希望你能得到这个想法! 最奇怪的部分是,如果我在参与者助手中记录日志,它会记录正确的内容,但它永远不会被渲染回html ......就像它仍然有我用jquery强制进行的那样。

如果我从其他客户端更新模板,那么它有效吗?比如两个单独的客户端正确更新,但一个没有。

关于发生了什么或者我可以做些什么来修复它的想法?

0 个答案:

没有答案