2016-05-12 20 views
0

不用說,新的Ember,只是試圖得到一個概念證明完成。已經有了EmberCLI的一些幫助,但這對我來說是一個新的奇怪。燼屬性無法在視圖中,只有ID

/routes/index.js

export default Ember.Route.extend({ 
    model() { 
    return this.store.findAll('skill'); 
}}); 

/models/skill.js

import Model from 'ember-data/model'; 

export default Model.extend({ 
    name: DS.attr('string'), 
    desc: DS.attr('string'), 
    type: DS.attr('string') 
}); 

/adapters/application.js

import DS from "ember-data"; 
export default DS.JSONAPIAdapter.extend({ 
    namespace: 'v1', 
    host: 'http://edu-api.app:8000', 
}); 

/serializers/application.js

import DS from "ember-data"; 
export default DS.JSONAPISerializer.extend({}); 

/templates/index.hbs

<h2>Skills</h2> 
    <ul> 
     {{#each model as |item|}} 
    <li> 
    <div> 
     <li>{{item}} {{item.id}} {{item.type}} {{item.name}} {{item.desc}}</li> 
    </div> 
    </li> 
    {{/each}} 
    </ul> 

看來這個ID attr爲可用的,正確的,但還沒有其他所有的attrs不被從JSON加載。如果我複製/粘貼json並將其手動設置到模型中,它會按預期工作,那麼從模型存儲區或序列化程序傳出時是否會進行一些過濾?

+0

你的有效載荷是什麼樣的? – MilkyWayJoe

回答

1

JSONAPISerializerJSONAPIAdapter爲簡單的JSON/REST後端但對於一個完全兼容JSONAPI後端。

你說,當你複製&粘貼,並設置在模型上它的工作原理,所以有可能你的意思是這樣:

this.store.createRecord('skill', { 
    id: '1', 
    name: 'foo', 
    desc: 'bar', 
    type: 'baz' 
}); 

這確實是一個模型的創建工作,但是是不是一個JSONAPI兼容的響應!在JSONAPI你有這樣的事情(如果請求應該返回多個實體:

{ 
    data: [{ 
     id: '1', 
     attributes: { 
      name: 'foo', 
      desc: 'bar', 
      type: 'baz' 
     } 
    }] 
} 

所以,現在你有兩個選擇:

  1. JSONAPI兼容的API,或
  2. 使用不同適配器&串行器。

RESTSerializer/RESTAdapter是一個簡單的默認實現,可以處理像這樣的結構:

{ 
    id: '1', 
    name: 'foo', 
    desc: 'bar', 
    type: 'baz' 
} 

此外,它們是高度可定製的。

結賬official API的文件。

+0

輝煌。感謝@Lux,你再次做到了。現在我應該在路上了! 快速第二個問題,任何使用JSONAPI格式的未來證明?我們正在構建API,以便我們可以按照語法所需進行操作,並且有人告訴我們JSONAPI應該是最好的方法,但我會重新考慮這一點。 – Rockman