我有一个使用ember 1.11.1的ember-cli应用程序,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应用程序确实在容器中显示相同的适配器和序列化程序,但我无法弄清楚它为什么,而我的其他应用程序没有。
知道为什么会这样吗?这让我疯了。
答案 0 :(得分:1)
序列化程序和适配器不再是单例。我假设通过查看检查器中Container选项卡的内容,它只显示单例对象。
当你说
时当我尝试添加并使用序列化程序时,没有任何作用
你是怎么做到的?现在的方法是通过商店访问它们。
基本上它现在的工作原理是store(store:main)负责在被问到时返回Adapter和Serializer。它第一次要求它创建实例,并且每个后续请求都返回相同的单个实例。他们不单身的原因是因为单个商店实例需要维护自己的适配器和序列化器 - 所以如果你有两个商店,你需要能够创建两个人物'例如适配器。
This Ember Forum discussion可能对你有所帮助。 This Pull Request是实施。