当多个模板实例存在时,如何处理模板事件?

时间:2015-03-01 10:50:35

标签: events meteor spacebars

我在2个地方包含相同的模板,其中包含不同的参数:

{{> newPost isReply=true replyTo=this}}

当我在helper方法中放置断点时,我看到this.isReply变量确实设置为true,事件函数中的hoverer是false。我认为原因是有几个包含相同的模板,另一个是这个标志设置为false的地方,选择器也适合该模板,并且它被调用,所以我得到模板之间的数据上下文不一致。这是选择器示例:

'click #savePost' : function() {
      if (this.isReply) {
      ....

我的问题是,也许有人可以解释流星在这种情况下的确切运作方式以及如何处理这种情况?现在我认为每个模板的解决方案都是#savePost唯一的,但我感兴趣的是,我的方式甚至是流星的好习惯吗?另外,如您所知 newPost 模板包含按钮#savePost,我应该如何让它独一无二?我不能这样做:

'click #savePost' + someId : function() {

1 个答案:

答案 0 :(得分:0)

我认为问题是您尝试使用this访问数据。正确的方法是使用Template.instance().data。例如:

'click #savePost': function( e, tmpl ) {

  if ( tmpl.data.isReply )
    //do stuff.

}

让我知道它是否有效。