Meteor - 有条件地返回一组事件处理程序

时间:2014-12-06 02:34:21

标签: meteor

在Meteor中,有条件地添加一组事件处理程序的最佳方法是什么?

例如,我尝试按照以下代码执行此操作(此代码不起作用,但您会了解我尝试实现的目标。)

Template.page_article.events( function(){
  if (something){
    return {
      some_event_name1,
      some_event_name2,
    }
  } else {
    return {
      some_event_name3,
      some_event_name4,
    }
  }
})

最好的方法是什么?我试图在events()之外设置一个变量,但我不喜欢这个解决方案,因为变量在所有其他模板之间共享。

1 个答案:

答案 0 :(得分:0)

您尝试实现的目标对我来说听起来不是一个糟糕的解决方案,但这是一种方法:

Template.page_article.events((function(){
  if (something){
    return {
      '<event>': function(){ console.log("A1") },
      '<event>': function(){ console.log("A2") }
    }
  } else {
    return {
      '<event>': function(){ console.log("B1") },
      '<event>': function(){ console.log("B2") }
    }
  }
})())

修改

通过添加评论,这听起来确实是一个糟糕的解决方案。做这样的事情:

Template.page_article.events({
    '<event>': function(event, template){
        if(something){
            console.log("Do something A1")
        }else{
            console.log("Do something B1")
        }
    }
    '<event>': function(event, template){
        if(something){
            console.log("Do something A2")
        }else{
            console.log("Do something B2")
        }
    }
})