3

我是 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 模型?

提前感谢您的支持!

4

1 回答 1

2

如果你的模型是这样的:

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"
    }
  ]
}

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

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

于 2013-07-10T15:42:07.077 回答