如何从控制台访问 Ember 数据存储?
How to access the Ember Data Store from the console?
在 Ember 2+ 中,有谁知道如何获取对 Ember 商店的引用以便对 javascript 控制台中的模型映射进行故障排除?
在 Ember 1 中通过 App.__container__.lookup
是可能的,但这已经不存在了,很难找到这方面的文档。
谢谢
如果您查看 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
.
如果您不想安装单独的包来在控制台中访问您的应用程序,您可以通过 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
源代码发现了它,因为它始终可以访问容器。
在 Ember 2+ 中,有谁知道如何获取对 Ember 商店的引用以便对 javascript 控制台中的模型映射进行故障排除?
在 Ember 1 中通过 App.__container__.lookup
是可能的,但这已经不存在了,很难找到这方面的文档。
谢谢
如果您查看 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
.
如果您不想安装单独的包来在控制台中访问您的应用程序,您可以通过 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
源代码发现了它,因为它始终可以访问容器。