【问题标题】:this.get('x') returns ' undefined' instead of 'undefined'this.get('x') 返回 'undefined' 而不是 'undefined'
【发布时间】:2016-01-31 01:30:17
【问题描述】:

在表单组件中,我有一个观察者,在开始进一步验证之前测试属性是否有效。
所以我检查了该属性是否尚未定义(发生在初始化 f.e.)

if(typeof this.get('myProperty') !== 'undefined') { 
    //do smth 
}

然后我意识到this.get 不会返回“未定义”类型,而是返回值为未定义的字符串。
很公平。

但是

console.log(this.get('myProperty'));

给我 'undefined' 而不是 'undefined' - 注意 'undefined' 之前的空格!

这是一个错误吗?
还是我真的必须用空格检查“未定义”,这有什么原因吗?

Ember-cli:1.13.7
余烬:2.0.1

【问题讨论】:

  • this.get 应该返回 undefined 而不是 'undefined'。确定您没有在其他地方将其设置为 ' undefined' 吗?尝试测试undefined === this.get('missingProperty');,如果该属性从未定义,它应该返回true
  • 我什至在组件中将其设置为''。这是在观察者中,在组件初始化期间它首先返回' undefined',然后是' ',然后是''
  • 观察者不应该返回任何东西,你在考虑计算属性吗?
  • 我想我发现了(我的)错误。 myProperty 确实是通过另一个计算属性设置的。谢谢你的提示。尚未解决,但我认为您是对的!

标签: ember.js


【解决方案1】:

您如何使用 Ember.isNone 或 Ember.isEmpty。对于相反的 Ember.isPresent

如果参数为 null 或未定义,则返回 true。

Ember.isNone(); // true
Ember.isNone(null); // true
Ember.isNone(undefined); // true
Ember.isNone(''); // false
Ember.isNone([]); // false
Ember.isNone(function(){}); // false

此实用程序函数通过对空字符串和空数组返回 false 来限制 Ember.none 上的规则。

Ember.isEmpty(); // true
Ember.isEmpty(null); // true
Ember.isEmpty(undefined); // true
Ember.isEmpty(''); // true
Ember.isEmpty([]); // true
Ember.isEmpty('tobias fünke'); // false
Ember.isEmpty([0,1,2]); // false

【讨论】:

    猜你喜欢
    • 2021-06-04
    • 1970-01-01
    • 2014-10-26
    • 1970-01-01
    • 2022-11-24
    • 1970-01-01
    • 1970-01-01
    • 2016-08-02
    • 2016-01-10
    相关资源
    最近更新 更多