まず、縮小版の製品版ではなく、デバッグ版の ember を使用する必要があるということです。これにより、コンソールでより良い ember 情報が得られます。
次に、ルート、ビュー、およびコントローラーのすべてのイベント内にデバッグを追加することで、私にとって非常に役に立ちました。
メインの App クラスに debugMode と呼ばれるプロパティがあり、次にログ関数があります。
window.App = Ember.Application.create({
debugMode: false,
log: function(message, location, data) {
if (this.debugMode) {
if (data != null) {
if (typeof data === 'object') {
data = Ember.inspect(data);
}
console.log('DEBUG: ' + this.appName + ' : ' + location + ' : ' + message);
return console.log('DEBUG: ' + this.appName + ' : (continued) data: ' + data);
} else {
return console.log('DEBUG: ' + this.appName + ' : ' + location + ' : ' + message);
}
}
}
ログ関数は、メッセージ、場所、および必要に応じて関連するデータを取り込みます。
したがって、ロギングの 2 つの例を以下に示します。
関数をログに記録し、データを渡す
App.ProfileController = Ember.ObjectController.extend({
setProfile: function() {
App.log("setting current user's profile", 'App.ProfileController.setProfile', App.currentUser);
//do other stuff with the profile
}
})
コントローラー/ビュー/ルートの初期化をログに記録します
App.EventController = Ember.ObjectController.extend({
init: function() {
this._super();
App.log('initializing event controller', 'App.EventController.init');
return this.set('isLoading', false);
}
})
次に、次のように、問題が発生している場所を診断するための優れたコンソール情報が表示されます。
DEBUG: My App Name : App.ApplicationController : application controller initializing
DEBUG: My App Name : App.ApplicationRoute.setupController : setupController called
DEBUG: My App Name : (continued) data: {target: <App.Router:ember249>, namespace: App, container: [object Object], _debugContainerKey:
DEBUG: My App Name : App.accountController.setCurrentUser : setting applications currentUser object
DEBUG: My App Name : (continued) data: {"id":3,"username":"bob","firstName":"Bob","lastName":"W","updatedAt":"2013-04-16T06:29:39.731Z"}
DEBUG: My App Name : App.EventController.init : initializing event controller
DEBUG: My App Name : App.EventRoute.setupController : setupController called
DEBUG: My App Name : (continued) data: {target: <App.Router:ember249>, namespace: App, container: [object Object], _debugContainerKey: controller:event, _childContainers: [object Object], isLoading: false}
最後に、でデバッグを使用します
debugger;
ビュー/ルート/コントローラーの内部
と
{{debugger}}
テンプレート内
およびコンソールまたはインライン使用から
Ember.inspect(YOUR_OBJECT);
エンバー情報を表示します。