Ember.js IF语句带OR条件导致意外行为

时间:2015-07-19 18:49:26

标签: javascript

似乎是一个简单的问题,但我无法弄清楚为什么以下代码根本不起作用......

关于gender1

如果我使用计算属性并尝试使用条件OR对几个字符串进行检查,则输出到标签中的结果始终为“male / female / other”,即使输入gender1包含其中一个...

关于gender2

但是,如果我不使用条件OR并仅针对“男性”进行测试,那么一切都按预期工作......

模板

<script type="text/x-handlebars" data-template-name="index">
    <label>:</label><br/><br/>
    <div>
        <label>Gender_not_working:</label>
        {{input value=gender1}}
        <label>{{verifyGender1}}</label>
    </div><br/>
    <div>
        <label>Gender_working:</label>
        {{input value=gender2}}
        <label>{{verifyGender2}}</label>
    </div><br/>
  </script>

控制器

App.IndexController = Ember.Controller.extend({
  gender1: "",
  gender2: "",
  verifyGender1: Ember.computed('gender1', function(){
    console.log(this.get('gender1').toLowerCase());
    if(this.get('gender1').toLowerCase() !== "male"||"female")
    {return "male/female/other";}
    else
    {return "MKay";}
  }),
  verifyGender2: Ember.computed('gender2', function(){
    console.log(this.get('gender2').toLowerCase());
    if(this.get('gender2').toLowerCase() !== "male")
    {return "male/female/other";}
    else
    {return "MKay";}
  }),
});

这个问题也出现在我创建的JS Bin上......

1 个答案:

答案 0 :(得分:1)

这是一个简单的JavaScript错误。
您无法将1个值与2个“潜在”值进行比较,就像您尝试openURL一样。您可以执行AppDelegate(val1 !== val2 || val3)以及其他一些方法来达到同样的效果。