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

Fab*_*och 8 ember.js ember-data ember.js-2

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

通过App.__container__.lookupEmber 1 可以实现,但这已经不存在了,而且很难找到相关的文档.

谢谢

GJK*_*GJK 15

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

AppName.__container__.lookup('service:store')
Run Code Online (Sandbox Code Playgroud)

您也可以执行我的操作并为其创建实例初始值设定项:

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);
    }
}
Run Code Online (Sandbox Code Playgroud)

然后你可以使用AppName.store.


kev*_*wan 6

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

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

从这里,您可以访问应用程序容器上的商店,如@GJK 所述

var store = app.__container__.lookup('service:store');
Run Code Online (Sandbox Code Playgroud)

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

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