我有一个ember cli app(v1.10),它在adapter / application.js中使用了restadapter。我在应用程序中添加了几个部分,但服务尚未编写,我想在其中使用带有虚假数据的灯具来构建所有内容。在我的第一次尝试中,我似乎无法集成具有不同于application.js中的不同适配器类型的部分。根据控制台错误,即使评估适配器使用FixtureAdapter,当我转到#/ assessment时,应用程序仍会尝试进行api调用。这是ember cli中常见的问题/限制吗?
router.js
Router.map(function() {
this.resource('assessments', function() {
this.route('publish');
});
});
模型/ 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({});
答案 0 :(得分:1)
<强> 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正在尝试使用单数执行查找(其内部代码将事物单一化以符合其期望)。
如果重命名模型/控制器/适配器/等。为了单数,一切都应该排队,并为你神奇地工作。