在餘燼調試方面,你可能已經閱讀:http://emberjs.com/guides/understanding-ember/debugging/
有幾個偉大的功能,你可以在開發過程中導通,以獲得更多的信息,什麼是引擎蓋下發生。
您可以在app.js插入:
var App = Ember.Application.extend({
LOG_TRANSITIONS_INTERNAL: true,
LOG_ACTIVE_GENERATION: true,
LOG_VIEW_LOOKUPS: true,
LOG_RESOLVER: true,
});
Ember.run.backburner.DEBUG = true;
Ember.ENV.RAISE_ON_DEPRECATION = true;
Ember.LOG_STACKTRACE_ON_DEPRECATION = true;
Ember.LOG_BINDINGS = true;
Ember.RSVP.on('error', function(error) {
Ember.Logger.assert(false, error);
});
,如果你在你的代碼編寫debugger
您可以停止你的代碼。我經常用它來弄清楚發生了什麼。
就你的問題而言,如果你擴展一個Ember類,它基本上會創建一個新的函數,但其行爲類似於擴展類的子類。您可以檢查所發生的事情有:https://github.com/emberjs/ember.js/blob/v1.7.0/packages/ember-runtime/lib/system/core_object.js#L536-L556
當你運行你的灰燼應用程序,你的應用程序會被包裹在一個容器,所以如果你需要訪問屬性或變量,你必須使用這 - 假設你的應用程序名稱是「應用程序」:
App.__container__.lookup("controller:application").get("currentRouteName")
App.__container__.lookup("controller:application").get("currentPath")
App.__container__.lookup("controller:application").get("model")
這是需要一段時間才能明白你怎麼能調試燼的應用程序,但值得去學習,並在其中投入更多的時間,因爲會很方便以後。
如果您有任何問題,請不要猶豫,我們可以解決它。
關於調試器;
它就像一個斷點,你可以停止代碼。在Chrome中必須打開「檢查元素」/「開發人員工具」。簡單的例子::http://jsbin.com/cugetoxoyira/45
的源代碼:http://jsbin.com/cugetoxoyira/45/edit 在第18行,有一個debugger;
,這樣你就可以在控制檯什麼是在控制器或模型PARAMS檢查。您必須在Chrome的開發者工具中的控制檯中輸入controller
。
我知道了,謝謝。所以有更多的選項可供調試。你能不能介紹一些細節,如果你不介意的話? 正如我在這裏可以看到https://github.com/emberjs/ember.js/blob/v1.7.0/packages/ember-runtime/lib/system/core_object.js#L536-L556它返回一個對象,這就是爲什麼我們可以訪問它的一些屬性,但爲什麼打印它打印一個函數?我不太明白。 把'debuggger'放在代碼上?這就像一個斷點?要麼? 是的,真正需要時間才能完全理解好餘燼,我在這方面投入了我的時間和精力。希望它會支付(擔心) – olanchuy 2014-10-16 21:31:49
這是因爲用於該對象的ember覆蓋toString方法。 'var fun = function(){};/* fun - 'function',typeof fun - 'function'*/fun.toString = function(){return'any string'; }/* fun - 'any string',typeof fun - 'function'* /' – Microfed 2014-10-16 22:46:02
我用調試器擴展了我的答案;你也可以在jsbin.com中看到一個小例子...... JSBin是一個很棒的網站,可以學習和使用片段...所以如果你想解決一些簡單的問題,但不是真的有用,你可以分享我們也是如此。 – Zoltan 2014-10-17 00:13:13