如何检查控制台中的Ember.js对象?

时间:2013-08-15 05:03:56

标签: ember.js

有没有办法在JavaScript控制台中获得Ember.js对象真正包含的内容。如果你做console.log(this),几乎任何对象都会得到几乎相同的数据结构,如下所示:

console.log of an Ember.js controller

这不是非常有用,它不会让你知道在对象上实际设置了什么属性。

到目前为止,我发现调试的唯一方法是尝试console.log(this.get('whatever'))任何可以想象的名称,但很难猜出可用的名称。

有没有办法深入挖掘对象的数据?

4 个答案:

答案 0 :(得分:25)

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));

答案 1 :(得分:5)

还有App.__container__对象,如果你知道你的对象在ember应用程序中注册了什么名称,它将允许你从任何环境调试时获取你需要的任何对象。

有几个例子是

App.__container__.lookup('store:main') # Gets the store
App.__container__.lookup('controller:blog') # Gets the blog controller

答案 2 :(得分:1)

ember-chrome-devtools现在很好地解决了这个问题......

答案 3 :(得分:0)

如果您要检查Ember Data记录,则可以从控制台调用该记录上的serialize方法,这将为您提供外部数据源所期望的对象。