ember.js 如何从控制台访问ember数据存储?

jaxagkaj  于 2022-11-05  发布在  其他
关注(0)|答案(2)|浏览(170)

在Ember 2+中,有没有人知道如何获得Ember Store的引用,以便在javascript控制台中排除模型Map的故障?
这是可能的,通过App.__container__.lookup在ember1,但这并不存在了,这是血腥的很难找到有关这方面的文档。
谢谢

41zrol4v

41zrol4v1#

如果您查看package.json,您应该会看到默认安装的ember-export-application-global包(如果没有,请安装它)。这将不会将应用程序导出到全局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

vojdkbi0

vojdkbi02#

如果您不想安装单独的软件包来访问控制台中的应用,您可以通过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');

我用这个调试了一个Ember应用程序,它没有在window上注册它的容器。我通过查看ember-inspector源代码找到了它,因为它总是可以访问容器。
https://github.com/emberjs/ember-inspector/blob/2237dc1b4818e31a856f3348f35305b10f42f60a/ember_debug/vendor/startup-wrapper.js#L201

相关问题