我有一个 ember cli 应用程序 (v1.10),它在适配器/application.js 中使用重新适配器。我正在向应用程序添加几个部分,但服务尚未编写,我想使用其中包含虚假数据的固定装置来构建所有内容。在我的第一次尝试中,我似乎无法将具有与 application.js 中不同的适配器类型的部分集成。根据控制台错误,当我转到 #/assessments 时,应用程序不断尝试进行 api 调用,即使评估适配器正在使用 FixtureAdapter。这是 ember cli 中的常见问题/限制吗?
路由器.js
Router.map(function() {
this.resource('assessments', function() {
this.route('publish');
});
});
models/assessments.js--
import DS from 'ember-data';
var Assessments = DS.Model.extend({
clientId: DS.attr(),
clientName: DS.attr('string'),
envId: DS.attr(),
envName: DS.attr('string')
});
Assessments.reopenClass({
FIXTURES: [
{
id: 1,
clientId: 1,
clientName: 'a',
envId:10,
envName: 'Production'
},
{
id: 2,
clientId: 2,
clientName: 'b',
envId:11,
envName: 'Dev'
},
{
id: 3,
clientId: 1,
clientName: 'a',
envId:12,
envName: 'Lab'
}
]
});
export default Assessments;
路线/assessments.js
import Ember from 'ember';
export default Ember.Route.extend({
model: function(){
return this.store.find('assessments');
}
});
非常感谢任何帮助!
适配器/assessments.js
import DS from "ember-data";
export default DS.FixtureAdapter.extend({});
最佳答案
TL;DR
事情失败是因为 Ember 正在尝试寻找用于 Assessment
而不是 Assessments
的适配器。以单数重命名事物,然后就可以开始了。
长解释
Ember CLI 对于如何布局有强烈的意见。其中一种观点是事物应该以单数命名。目前,您以复数形式命名事物,但事情正在被抛弃。
如果您安装了适用于 Chrome 的 Ember Inspector,获取 ApplicationController
,并尝试以下操作,您应该会得到这些结果:
var container = $E.get('container');
console.log(container.lookup('adapter:assessments')); // should get something
console.log(container.lookup('adapter:assessment')); // should be undefined
不幸的是,Ember 正在尝试使用单数执行查找(其内部代码将事物单数化以符合其期望)。
如果您重命名模型/ Controller /适配器/等。为了成为独一无二的,一切都应该排列整齐并神奇地为你工作。
关于javascript - Ember cli 应用程序具有不同的适配器类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32121562/