Ember cli app有不同的适配器类型吗?

时间:2015-08-20 14:53:04

标签: javascript ember.js ember-data ember-cli

我有一个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({});

1 个答案:

答案 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正在尝试使用单数执行查找(其内部代码将事物单一化以符合其期望)。

如果重命名模型/控制器/适配器/等。为了单数,一切都应该排队,并为你神奇地工作。