有没有办法在JavaScript控制台中得到Ember.js对象真正包含的内容呢?如果你使用console.log(this),你会得到几乎所有对象都相同的数据结构,如下所示:
console.log(this)
这不是很有用,而且它也不知道对象上实际设置了什么属性。到目前为止,我发现的唯一调试方法是尝试使用console.log(this.get('whatever'))来获得任何可能的名称,但很难猜测可用的名称。有没有办法更深入地挖掘对象的数据?
console.log(this.get('whatever'))
yuvru6vn1#
Ember提供了几种方法来帮助从控制台调试对象:
Object.toString打印任何成员对象的标识
App.Person = Em.Object.extend() person = App.Person.create() person.toString() //=> "<App.Person:ember1024>"
Ember.inspect将对象转换为有用的字符串描述
var object = Ember.Object.create({ firstName: 'Hansi', lastName: 'Hinterseer', age: 58 }); console.log( Ember.inspect(object) ); // {__ember1331067974108_meta: [object Object] , firstName: Hansi , lastName: Hinterseer , age: 58}
Ember.keys返回在对象或哈希上定义的所有键
console.log(Ember.keys(this));
osh3o9ms2#
还有App.__container__对象,如果你知道你的对象注册到ember应用程序的名称,它将允许你在任何环境下调试时获取你需要的任何对象。下面是几个例子
App.__container__
App.__container__.lookup('store:main') # Gets the store App.__container__.lookup('controller:blog') # Gets the blog controller
mxg2im7a3#
ember-chrome-devtools是现在解决这个问题的一个很好的方法...
thigvfpy4#
如果你试图检查一个Ember Data记录,你可以从你的控制台调用serialize方法,这将为你提供外部数据源所期望的对象。
4条答案
按热度按时间yuvru6vn1#
Ember提供了几种方法来帮助从控制台调试对象:
Object.toString打印任何成员对象的标识
Ember.inspect将对象转换为有用的字符串描述
Ember.keys返回在对象或哈希上定义的所有键
osh3o9ms2#
还有
App.__container__
对象,如果你知道你的对象注册到ember应用程序的名称,它将允许你在任何环境下调试时获取你需要的任何对象。下面是几个例子
mxg2im7a3#
ember-chrome-devtools是现在解决这个问题的一个很好的方法...
thigvfpy4#
如果你试图检查一个Ember Data记录,你可以从你的控制台调用serialize方法,这将为你提供外部数据源所期望的对象。