在Ember 2+中,是否有人知道如何获取对Ember Store的引用以便在javascript控制台中对模型映射进行故障排除?
有可能通过Ember 1中的App.__container__.lookup
,但这已经不存在了,而且很难找到相关的文档。
由于
答案 0 :(得分:14)
如果查看package.json
,您应该会看到默认安装的ember-export-application-global
软件包(如果没有,请安装它)。这会将您的应用程序导出到全局App
对象,而不是导出以您的应用命名的全局对象。因此,您可能会window.TodoList
或window.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
源代码发现了它,因为它始终可以访问该容器。