在 Ember 2+ 中,有谁知道如何获取对 Ember 商店的引用,以便在 javascript 控制台中排除模型映射问题?
在 Ember 1中可以通过App.__container__.lookup
,但这不再存在,而且很难找到关于此的文档。
谢谢
在 Ember 2+ 中,有谁知道如何获取对 Ember 商店的引用,以便在 javascript 控制台中排除模型映射问题?
在 Ember 1中可以通过App.__container__.lookup
,但这不再存在,而且很难找到关于此的文档。
谢谢
如果你查看你的package.json
,你应该会看到一个ember-export-application-global
默认安装的包(如果没有,安装它)。这不会将您的应用程序导出到全局App
对象,而是导出到以您的应用程序命名的全局对象。所以你可能有window.TodoList
orwindow.ShoppingCart
而不是window.App
. 从那里你可以使用这一行(类似于 Ember 1.xx):
AppName.__container__.lookup('service:store')
你也可以像我一样为它创建一个实例初始化器:
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
.
如果您不想安装单独的包来在控制台中访问您的应用程序,您可以通过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
源代码找到了它,因为它始终可以访问容器。