似乎是一个简单的问题,但我就是不明白为什么下面的代码根本不起作用......
关于性别1
:
如果我使用计算属性并尝试使用条件 OR 对几个字符串进行检查,则输出到标签的结果始终为“男/女/其他”,即使输入 sex1 包含其中之一...
关于性别2
:
但是,如果我不使用条件 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>
Controller
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 上我创建的...
最佳答案
这是一个简单的 JavaScript 错误。
您无法像您尝试的那样将 1 个值与 2 个“潜在”值进行比较 (val1 !== val2 || val3)
。您可以执行 (val1 !== val2 && val1 !== val3)
或 ([val2, val3].indexOf(val1) >= 0)
,可能还有一些其他方法也能达到同样的效果。
关于javascript - Ember.js 带有 OR 条件的 IF 语句导致意外行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31504710/