javascript - Ember cli 应用程序具有不同的适配器类型?

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

我有一个 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/

相关文章:

ember.js - Ember-CLI:有没有办法将(供应商)目录复制到/public/assets?

javascript - Ember-cli 中的 Polymer 1.0,外观错误

ember.js - 检测 Ember 对象的状态变化

javascript - ngAnimate 在使用 requirejs 时不工作

javascript - 如何从多个输入文件控件中获取文件?

javascript - Ember.js - 为目标应用程序创建动态 filterProperty 值

javascript - 在 Ember 中保存到服务器时更改模型的 JSON 根

javascript - Ember.js 2.渲染页面后在后台延迟获取

javascript - 谷歌应用可视化可以吗?具有缩放选项的时间轴

javascript - 更改嵌套值时不会触发对记录的订阅