【问题标题】:How to map json data coming from an REST-API to ember.js model?如何将来自 REST-API 的 json 数据映射到 ember.js 模型?
【发布时间】:2013-07-08 13:07:35
【问题描述】:

我是 EmberJS 的新手,我尝试通过 RESTAdapter 将我的 EmberJS 前端连接到 API。我正在使用 ember-1.0.0-rc.6 和 ember-data-latest(版本:v0.13-59-ge999edb)。 从 API 我得到以下 JSON 代码:

{
    "page": 1,
    "limit": 5,
    "total": 4,
    "results": [
        {
            "id": 1,
            "title": "something3",
            "description": "asd3"
        },
        {
            "id": 2,
            "title": "something3",
            "description": "asd3"
        },
        {
            "id": 3,
            "title": "something2",
            "description": "asd2"
        },
        {
            "id": 4,
            "title": "something",
            "description": "asd"
        }
    ]
}

我的 RESTAdapter 如下所示:

App.Store = DS.Store.extend({
    revision: 13,
    adapter: DS.RESTAdapter.extend({
        url:"http://localhost/api/app_dev.php"
    })
});

我的模型现在是这样的:

App.Modelname = DS.Model.extend({
    title: DS.attr('string')
});

这样,我在浏览器控制台中收到以下错误:

断言失败:您的服务器返回了一个带有关键页面的哈希值,但您没有它的映射

我的问题是如何在不更改服务器上的 api 的情况下将 api 的 json 输出连接到我的 ember 模型?

提前感谢您的支持!

【问题讨论】:

    标签: json rest ember.js


    【解决方案1】:

    如果你的模型是这样的:

    App.Modelname = DS.Model.extend({
      title: DS.attr('string')
    });
    

    那么RESTAdapter 需要这样的 JSON 格式:

    {
      "modelNames": [
        {
            "id": 1,
            "title": "something3",
            "description": "asd3"
        },
        {
            "id": 2,
            "title": "something3",
            "description": "asd3"
        },
        {
            "id": 3,
            "title": "something2",
            "description": "asd2"
        },
        {
            "id": 4,
            "title": "something",
            "description": "asd"
        }
      ]
    }
    

    您当然可以通过配置JSONSerializerRESTAdapter 的某些方面来调整其中的一些行为,IMO 可以完全控制我建议通过覆盖find 等重要功能来创建自己的适配器, findAll 等,然后使用普通的 $.ajax(...)。否则你需要让你的后端遵循 ember-data 期望的 JSON 格式。

    希望它有所帮助,至少做出决定。

    【讨论】:

    • 感谢您的回答!我会尝试编写自己的适配器。
    • @Oliver13,不客气,如果您发现我的回答有用,您可以将其标记为已回答,以供将来遇到此问题的人参考。
    猜你喜欢
    • 1970-01-01
    • 2017-10-05
    • 2013-11-29
    • 2013-03-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多