2014-06-30 48 views
2

我試圖使用Ember數據與已經構建的REST API。它工作正常的頂級路線,例如,我有一個像下面對API方面的課程路線:Ember模型中的自定義請求網址

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

以上工作正常,我可以很容易地與Ember數據獲取數據。但是,具有多個級別的路由會出現問題。例如,課程可以有多個主題,主題可以有多個講座,因此它們的路由在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以及(而不是在查詢,但在網址正文中,你可以從後端api中的url結構中看到)。

在Ember我有模型的課程,主題和演講,但我不知道如何指定自定義網址,以便Ember數據可以使用這些網址時,我提出請求。

一種方法可能是手動進行ajax請求,但這種方式記錄將不會填充到Ember Data Store中。

或者我可以在Ember中定義模型之間的關係,但是這需要在後端api上進行更改,這對我來說也不是一種選擇。

那麼有什麼好方法可以解決這個問題嗎?

我使用:

燼:V1.6.0-beta.2

燼-數據:V1.0.0-beta.7

回答

0

避免灰燼數據,恩貝爾工作得很好,沒有它。

如果您確實想使用它,請進行ajax調用,然後使用store.pushPayload('type', data)將數據轉載到商店中,前提是您確實需要在商店中使用該數據。