如何在ember-cli app中访问全局对象

时间:2014-11-23 21:57:22

标签: ember-cli

在常规的emberjs应用程序中,你可以做到

App.__container__.lookup("controller:application")

我怎样才能实现这个最新版本的ember-cli?我看不到任何要引用的全局应用程序对象。

3 个答案:

答案 0 :(得分:4)

假设您生成了这样的应用:

ember new kittens

您的调试语句将是:

Kittens.__container__.lookup("component:bootstrap-datepicker")

答案 1 :(得分:0)

在Ember CLI中定义初始化程序时,您可以执行以下操作:

ember generate initializer my-cool-init

在文件中:app/initializers/my-cool-init.js有类似的内容:

export default {
  name: 'my-cool-init',

  initialize: function initialize(container/*, application*/) {
    var foobar = container.lookup('controller:application');
    // inject or preload stuff etc
  }
};

http://emberjs.com/api/classes/Ember.Application.html#toc_initializers

http://emberjs.com/guides/understanding-ember/dependency-injection-and-service-lookup/

答案 2 :(得分:0)

2个选项

  1. Ember Inspector Chrome扩展程序
  2. 使用ember-export-application-global插件将您的应用程序公开为全局变量
  3. Ember Inspector Chrome扩展程序

    查看Ember Inspector on the Chrome web store。它是Chrome扩展程序,可为您的Ember应用程序提供调试和检查工具。

    您可以直观地访问容器,当前视图层次结构,Ember-Data商店内容列表等。

    例如,如果您在discuss.emberjs.com上打开检查器,则可以看到有11个控制器,您可以检查每个控制器以查看其属性。您甚至可以将对象发送到控制台,以便以编程方式使用它们。

    enter image description here

    使用ember-export-application-global

    另一种方法是使用ember-export-application-global ember-cli插件包。此包设置一个全局变量,其中包含对应用程序的引用。这允许您以最初提到的方式访问容器。