在余烬调试方面,你可能已经阅读: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