14

有什么方法可以在 JavaScript 控制台中获取 Ember.js 对象真正包含的内容。如果你这样做console.log(this),你将获得几乎所有对象的几乎相同的数据结构,如下所示:

Ember.js 控制器的 console.log

这不是很有帮助,它让您不知道对象上实际设置了哪些属性。

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

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

4

4 回答 4

27

Ember 提供了几种方法来帮助从控制台调试对象:

Object.toString打印任何 ember 对象的身份

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));
于 2013-08-15T05:49:28.750 回答
6

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

几个例子是

App.__container__.lookup('store:main') # Gets the store
App.__container__.lookup('controller:blog') # Gets the blog controller
于 2013-11-01T17:49:40.093 回答
1

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

于 2017-12-13T11:12:51.970 回答
0

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

于 2020-01-09T18:50:51.793 回答