2016-05-25 17 views
0

最近我遇到了EmberJS。有幾個問題,我無法在文檔中找到答案。如何在Emberjs中正確組織api請求?

  1. 授權用戶在頁面加載時從/ api/profile中的服務器檢索數據。但是,如果我嘗試通過ember api方法執行此操作,則會收到api/profiles的請求。如何進行正確的查詢?我需要獲取用戶結構,將其保存在'profile'模型中並在路由和組件中使用它。

  2. 假設處理了第一個問題。接下來,模板有問題。有根應用程序模板。有「nav-bar」組件,它表示授權用戶的名稱。那麼,如何將用戶數據的模型放入這個組件?此模板不在路線中。這裏是{{nav-bar}}模板,所以我需要將用戶方案傳遞給它。

    <div id = "wrapper"> {{nav-bar}} {{outlet}} </div> 
    

我想,也許我不餘燼架構得到的東西,請大家幫幫我!

預先感謝您!

回答

0

第一個問題。我想你試圖做這樣的事情,讓您的配置文件:

this.get('store').findAll('profile') 

默認情況下,子玉會格式化JSON API規範(請參閱http://jsonapi.org/)以下的HTTP請求。 JSON API定義profile資源應可在GET api/profiles訪問。

Ember允許您自定義適配器,即處理與API通話的部分。本指南將幫助您根據您的API自定義適配器:https://guides.emberjs.com/v2.4.0/models/customizing-adapters/

關於您的nav-bar組件。你可以通過變量組成是這樣的:

{{nav-bar user=myUser}} 

myUser是在您的控制器調用組件和user在組件上下文中的變量名稱的變量。

有一個偉大的庫叫做ember-simple-auth(https://github.com/simplabs/ember-simple-auth),它可以幫助你處理用戶認證。我建議你在跳進它之前先看看它。

+0

嗨,謝謝你的回答。 {{nav-bar user = myUser}}的問題是這個表達式在aplication.hbs中,並且這個模板沒有它自己的路由,所以我不能在那裏傳遞模型。 – DenimTornado

+0

您可以擁有一個控制器和一個「應用程序」路線。只要問一下ember-cli就可以用'ember generate route application'和'ember generate controller application'來實現它。請注意,所有路線都是應用程序路線的子項。確保你定義的內容不會太多地影響你的應用程序。 –