Ember模型中的自定义请求网址

时间:2014-06-30 09:00:57

标签: javascript rest ember.js ember-data

我正在尝试使用已构建的REST api的Ember数据。它适用于顶级路线,例如我有api方面的路线如下:

app.get('/courses', app.controllers.courses.findAll)
app.get('/courses/:id', app.controllers.courses.findById)

以上工作正常,我可以使用Ember Data轻松获取数据。但问题出现在具有多个级别的路线上。例如,课程可以有多个主题,主题可以有多个讲座,因此在api端定义了这些课程的路由。

主题:

app.get('/courses/:course_id/topics', app.controllers.topics.findAll)
app.get('/courses/:course_id/topics/:id', app.controllers.topics.findById)

讲座:

app.get('/courses/:course_id/topics/:topic_id/lectures', app.controllers.lectures.findAll)
app.get('/courses/:course_id/topics/:topic_id/lectures/:id', app.controllers.lectures.findById)

因此,如果我想在课程中获得所有课程,我还需要指定课程ID和主题ID(不在查询中,但在url正文中,正如您可以从后端api中的url结构中看到的那样)。

在Ember我有课程,主题和讲座的模型,但我不知道如何指定自定义网址,以便Ember Data可以在我提出请求时使用这些网址。

一种方法是手动发出ajax请求,但这样就不会在Ember Data Store中填充记录。

或者我可以在Ember中定义模型之间的关系但是这需要对后端api进行更改,这对我来说也不是一个选项。

那么有什么好方法可以解决这个问题吗?

我正在使用:

Ember:v1.6.0-beta.2

Ember-Data:v1.0.0-beta.7

1 个答案:

答案 0 :(得分:0)

避免使用Ember数据,没有它,Ember就可以正常工作。

如果您真的想要使用它,请进行ajax调用,然后使用store.pushPayload('type', data)将数据加载到商店中,如果您真的想要它存储在商店中。