在调试器中访问Ember对象实例

时间:2013-08-10 16:44:49

标签: ember.js

在调试器中,通过键入App.ClassName.prototype可以轻松获得我创建的对象的类定义。好吧不是很有意思,但是当你第一次在“Ember dark”中感受到时,它仍然很好。虽然实例怎么样?这就是我想要访问的内容。

如果我的应用已移至ActivitiesByDateRoute并实例化ActivitiesByDateController,那么必须有ActivitiesByDateController的实例,但它存储在哪个容器中?我想也许Ember调试器(又名,ember-extension)可能会帮助我解决这个问题。我认为应该,但我只是没有得到它。以下内容对我有什么影响?

实例名称似乎是ember461,但如何在调试器中对其进行操作?我试过App.ember461 ...不行。我试过App.ActivitiesByDateController.ember461 ...也不行。

无论如何,你得到了我的问题的要点。请帮助,我是一个没有实例的对象。

2 个答案:

答案 0 :(得分:3)

以下是操纵余烬模型的最简单方法。

只需将模型的一个属性输出到页面

 {{ someValue }}

将值绑定到输入框

 {{ input value=someValue }}

在第一次生成模板时记录对象的值(而不是在更改时)。

 {{ log someValue }}

在生成模板时停止模板,以便您可以查看模型。

 {{ debugger }}

输出正在构建的模板的上下文

 {{this}}
 {{model}}
 {{controller}}
 {{view}}

检查路径中setupController挂钩中的模型,甚至做一些可怕的事情,比如让模型成为一个你可以在任何地方查看的全局变量(我只是用它来测试/调试)

 App.SomeRoute = Ember.Route.extend({
   setupController: function(controller, model) {
      this._super(controller, model);
      globalSomeModel = model; // I wouldn't recommend polluting the global scope except for testing etc.
   }
 });

尝试抓取部分ember并在ember run循环之外使用/操作它们会给你带来意想不到的结果。

以下是我在另一篇关于在ember运行循环之外获取控制器实例的SO帖子中留下的一些信息。

var controller = Application.__container__.lookup('controller:someCamelCaseName');

我提到的一些先前的内容可以在这个jsbin http://jsbin.com/efajen/1/edit

中查看

答案 1 :(得分:2)

现在从调试器(我的意思是ember-extension插件)中,您可以单击该元素,并在控制台中通过$ E检索它。