ember.js - 如何在 Ember-Data 上设置映射

标签 ember.js ember-data

我开始使用 ember-data 并且在映射数据时遇到问题

这是我的代码示例(我将 jsonTest 作为从后端接收的数据的示例,我不在后端工作,也无法修改来自服务器的响应)

Clive = Ember.Application.create();
// MODEL


Clive.Deadline = DS.Model.extend({
    title : DS.attr('string'),
});

jsonTest = '{"items":[{"id":93,"title":"title","date":"14-11-2012"}]}';

// Adapter 
Clive.adapter = DS.Adapter.create({
    findAll : function(store,type){
        var  self = this;        
        self.didFindAll(store, type, jsonTest);
    }
});

Clive.store = DS.Store.create({
  revision: 11,
  adapter: 'Clive.adapter'
});

Clive.deadlineList = Clive.Deadline.find().get('items');

当我运行代码时出现此错误:
Uncaught Error: assertion failed: Your server returned a hash with the key 0 but you have no mapping for it 

这是一个带有示例的jsfdlle:http://jsfiddle.net/gilles/6D5BC/

最佳答案

“服务器返回一个键为 0 的哈希”是因为 didFindAll() 需要一个 javascript 对象而不是一个字符串。所以再试一次:

json = {"items":[{"id":93,"title":"title","date":"14-11-2012"}]};
// -> "Your server returned a hash with the key items but you have no mapping for it"

下一步是将对象转换为具有 ember 期望的命名约定。由于您的模型名为 Deadline,请使用以下内容:
jsonTransformed = '{"deadlines": [{"id":93,"title":"title 1","date":"14-11-2012"},{"id":94,"title":"title 2","date":"14-11-2012"}]}';

我已经添加了第二条记录,但你明白了。最后你需要改变Clive.deadlineList正在设置变量:Clive.Deadline.find()返回一组 Clive.Deadline 模型,所以只需:
Clive.deadlineList = Clive.Deadline.find()
console.log(Clive.deadlineList.getEach('title'));
// -> title1, title2

这是一个带有工作示例的更新 jsfiddle:
http://jsfiddle.net/mgrassotti/6D5BC/9/

关于ember.js - 如何在 Ember-Data 上设置映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14155094/

相关文章:

ember.js - 将参数传递给 ember 插件源代码的最佳方式

javascript - Django 和 Ember.js

ember.js - 在 Ember 1.13 中将 ArrayController/View 移动到组件

javascript - 我在哪里可以找到一些关于 ember.js 的实用教程或练习?

ember.js - 检查 embelsTo() 关系在 ember 数据中是否存在

ember.js - Ember 简单例份验证如何在身份验证数据可用时进行更新

javascript - 我可以使用 EmberJS mixin 添加(静态)类方法吗

javascript - Ember 组绑定(bind)

ember.js - 如何将数据从路由发送到组件?

ember.js - 使用本地存储适配器在 ember-data 中自动生成 id