条件行动逻辑应该在哪里?

时间:2016-07-22 17:41:44

标签: javascript ember.js conditional standards

我正在开发一个使用ember的项目。条件逻辑可以放在HTML模板,控制器和函数定义的位置。我有一个只需要在全局变量为真时触发的动作。

    <div {{action 'CallThisAction' on='click'}}>...</div>

在.hbs我能做到

{{#if global.x}}
   <div {{action 'CallThisAction' on='click'}}>...</div>
{{else}}
   <div>...</div>
{{/if}}

或在我可以的功能

CallThisAction(){
 if(global.x){
    //do something
   }
}

或者我可以在控制器中添加逻辑,以防止CallThisAction被调用偏离global.x。控制器也被折旧。

我也可以作为参数传递:

CallThisAction(x){
 if(x){
    //do something
   }
}

有更清洁的方法吗?理想情况下,这里的解决方案很不错:Feature Request

1 个答案:

答案 0 :(得分:1)

您的模板不应使用全局变量。最好将此类逻辑存储在您的操作中:

actions: {
  CallThisAction(){
    if(!global || !global.x){
      return;
    }
    // do something
  }
}