Ember 序列化器和适配器未加载
Ember serializers & adapters not loading
我有一个 ember-cli 应用程序,使用 ember 1.11.1,ember-data 1.0.0-beta.16.1 & ember-cli 0.2。 1
我在 app/serializers/role.js 中有一个序列化器,它是通过 ember g serializer Role
生成的
import DS from 'ember-data';
export default DS.RESTSerializer.extend({});
我在 app/adapters/application.js:
中有一个适配器
import DS from 'ember-data';
export default DS.RESTAdapter.extend({namespace: 'api/1'});
当我加载我的应用程序时,chrome ember 检查器在容器部分没有显示序列化程序或适配器的迹象。
当我在浏览器中查看源代码时,/assets/frontend/frontend.js
中确实出现了正确的代码:
define('frontend/serializers/role', ['exports', 'ember-data'], function (exports, DS) {
'use strict';
exports['default'] = DS['default'].RESTSerializer.extend({});
});
define('frontend/adapters/application', ['exports', 'ember-data'], function (exports, DS) {
'use strict';
exports['default'] = DS['default'].RESTAdapter.extend({ namespace: "api/1" });
});
Ember 应用程序启动时没有错误,除了当我尝试添加和使用序列化程序时,没有任何效果,因为它没有加载并且没有出现在 Ember 容器中 - 即使当我通过控制台检查 application.registry._defaultContainer.cache
时。
我有另一个简单的 ember-cli 应用程序,它确实在容器中显示了相同的适配器和序列化程序,但我不明白为什么会这样,而我的其他应用程序却没有。
知道为什么会这样吗?快把我逼疯了。
序列化器和适配器不再是单例的。我假设通过查看检查器中容器选项卡的内容,它只显示单例对象。
当你说
when I try to add to and use the serializer, nothing works
你是怎么做到的?现在的方法是通过商店访问它们。
基本上它现在的工作方式是商店 (store:main) 负责在被询问时返回适配器和序列化程序。第一次被询问时,它创建了实例,每个后续请求 returns 都创建了同一个实例。它们不是单例的原因是因为单个商店实例需要维护自己的适配器和序列化器 - 因此,如果您有两个商店,您需要能够创建两个 'Person' 适配器。
This Ember Forum discussion might help you a bit. This Pull Request是实现。
我有一个 ember-cli 应用程序,使用 ember 1.11.1,ember-data 1.0.0-beta.16.1 & ember-cli 0.2。 1
我在 app/serializers/role.js 中有一个序列化器,它是通过 ember g serializer Role
import DS from 'ember-data';
export default DS.RESTSerializer.extend({});
我在 app/adapters/application.js:
中有一个适配器import DS from 'ember-data';
export default DS.RESTAdapter.extend({namespace: 'api/1'});
当我加载我的应用程序时,chrome ember 检查器在容器部分没有显示序列化程序或适配器的迹象。
当我在浏览器中查看源代码时,/assets/frontend/frontend.js
中确实出现了正确的代码:
define('frontend/serializers/role', ['exports', 'ember-data'], function (exports, DS) {
'use strict';
exports['default'] = DS['default'].RESTSerializer.extend({});
});
define('frontend/adapters/application', ['exports', 'ember-data'], function (exports, DS) {
'use strict';
exports['default'] = DS['default'].RESTAdapter.extend({ namespace: "api/1" });
});
Ember 应用程序启动时没有错误,除了当我尝试添加和使用序列化程序时,没有任何效果,因为它没有加载并且没有出现在 Ember 容器中 - 即使当我通过控制台检查 application.registry._defaultContainer.cache
时。
我有另一个简单的 ember-cli 应用程序,它确实在容器中显示了相同的适配器和序列化程序,但我不明白为什么会这样,而我的其他应用程序却没有。
知道为什么会这样吗?快把我逼疯了。
序列化器和适配器不再是单例的。我假设通过查看检查器中容器选项卡的内容,它只显示单例对象。
当你说
when I try to add to and use the serializer, nothing works
你是怎么做到的?现在的方法是通过商店访问它们。
基本上它现在的工作方式是商店 (store:main) 负责在被询问时返回适配器和序列化程序。第一次被询问时,它创建了实例,每个后续请求 returns 都创建了同一个实例。它们不是单例的原因是因为单个商店实例需要维护自己的适配器和序列化器 - 因此,如果您有两个商店,您需要能够创建两个 'Person' 适配器。
This Ember Forum discussion might help you a bit. This Pull Request是实现。