如何从控制台访问Ember Data Store?

时间:2015-10-06 13:48:00

标签: ember.js ember-data ember-2.0.0

在Ember 2+中,是否有人知道如何获取对Ember Store的引用以便在javascript控制台中对模型映射进行故障排除?

有可能通过Ember 1中的App.__container__.lookup,但这已经不存在了,而且很难找到相关的文档。

由于

2 个答案:

答案 0 :(得分:14)

如果查看package.json,您应该会看到默认安装的ember-export-application-global软件包(如果没有,请安装它)。这会将您的应用程序导出到全局App对象,而不是导出以您的应用命名的全局对象。因此,您可能会window.TodoListwindow.ShoppingCart而不是window.App。从那里你可以使用这一行(类似于Ember 1.x.x):

AppName.__container__.lookup('service:store')

您也可以执行我的操作并为其创建instance initializer

export default {
    name: 'store-on-app',
    after: 'ember-data',
    initialize(instance) {
        const application = instance.container.lookup('application:main');
        const store = instance.container.lookup('service:store');
        application.set('store', store);
    }
}

然后你可以使用AppName.store

答案 1 :(得分:1)

如果您不想安装单独的程序包来访问控制台中的应用程序,则可以通过window.Ember.Namespace.NAMESPACES完成。例如,您可以在控制台中运行以找到您的应用程序实例的内容是:

var app = Ember.A(Ember.Namespace.NAMESPACES).filter(n => {return n.name === 'your-app-name'})[0];

您可以按照@GJK的说明从此处访问应用容器上的商店

var store = app.__container__.lookup('service:store');

我用它来调试生产中未在window上注册其容器的Ember应用。我通过查看ember-inspector源代码发现了它,因为它始终可以访问该容器。

https://github.com/emberjs/ember-inspector/blob/2237dc1b4818e31a856f3348f35305b10f42f60a/ember_debug/vendor/startup-wrapper.js#L201