2013-08-15 2 views
8

Gibt es eine Möglichkeit, herauszufinden, was ein Ember.js-Objekt wirklich in der JavaScript-Konsole enthält. Wenn Sie console.log(this) tun, werden Sie fast die gleiche Datenstruktur erhalten für fast jedes Objekt, etwa wie folgt:Wie überprüft man Ember.js Objekte in der Konsole?

console.log of an Ember.js controller

Das ist nicht super hilfsbereit ist, und es gibt Ihnen keine Ahnung, was auf das Objekt tatsächlich eingestellten Attribute werden .

Bis jetzt ist die einzige Möglichkeit, die ich zum Debuggen gefunden habe, zu versuchen und console.log(this.get('whatever')) für jeden erdenklichen Namen, aber es ist schwer zu erraten, was verfügbar ist.

Gibt es eine Möglichkeit, tiefer in die Daten des Objekts zu graben?

Antwort

24

Ember bietet mehrere Methoden debuggen ein Objekt von der Konsole zu helfen:

Object.toString druckt Identität jedes ember Objekt

App.Person = Em.Object.extend() 
person = App.Person.create() 
person.toString() 
//=> "<App.Person:ember1024>" 

Ember.inspect konvertiert das Objekt in eine nützliche String Beschreibung

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 gibt alle der auf einem Objekt definiert Schlüssel oder Hash

console.log(Ember.keys(this)); 
+0

Danke, dass es ein bisschen leichter zu sehen, macht, was unter der Decke vor sich geht :) – mikl

+0

"Hansi Hinterseer" LOL – splattne

5

Es gibt auch die App.__container__ Objekt, das, wenn Sie wissen, was zu nennen sind Ihre Objekte mit zu den glühenden Kohlen App registriert, können Sie jede greifen Objekt, das Sie beim Debuggen aus einer beliebigen Umgebung benötigen.

Ein paar Beispiele sind

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