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

t40tm48m  于 2022-11-05  发布在  其他
关注(0)|答案(4)|浏览(118)

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

这不是很有用,而且它也不知道对象上实际设置了什么属性。
到目前为止,我发现的唯一调试方法是尝试使用console.log(this.get('whatever'))来获得任何可能的名称,但很难猜测可用的名称。
有没有办法更深入地挖掘对象的数据?

yuvru6vn

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

osh3o9ms2#

还有App.__container__对象,如果你知道你的对象注册到ember应用程序的名称,它将允许你在任何环境下调试时获取你需要的任何对象。
下面是几个例子

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

mxg2im7a3#

ember-chrome-devtools是现在解决这个问题的一个很好的方法...

thigvfpy

thigvfpy4#

如果你试图检查一个Ember Data记录,你可以从你的控制台调用serialize方法,这将为你提供外部数据源所期望的对象。

相关问题