簡體   English   中英

灰燼數據未填充模型

[英]Ember data not populating model

我正在嘗試從Rails API中獲取一些數據並將其顯示在模板中。 我是個新手,如果這是一個非常愚蠢的問題,那么解釋越簡單越好,請原諒我。

問題似乎是api數據無法正確到達模型,當我具有靜態固定裝置數據但不適用於服務器數據時,它可以工作。 對服務器的Get請求正在處理中,我得到了很好的響應,因此json如何移動到模型中一定有問題。

我在routes/external/jobs.js中的routes/external/jobs.js

import Ember from 'ember';

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

});

我在models/job.js工作模型

import DS from 'ember-data';

export default DS.Model.extend({
    title: DS.attr('string'),
    id: DS.attr('string')
});

我期望我的API以以下形式返回數據

{
  "jobs": [
      {
        id: "jfdsa132113",
        title: "developer",
        type: "Job",
        body: "lorem ipsum",
        published_at: date,
        tags: [
              "some stuff",
              "more stuff"
        ]
      },
      {
        id: "fdsafd3432",
        title: "designer",
        type: "Job",
        body: "lorem ipsum",
        published_at: date,
        tags: [
              "some stuff",
              "more stuff"
        ]
      }
   ]
}

我的路由器

Router.map(function () {

 //index route

this.route('external', function () {
   this.route('jobs');
   this.route('support');

});

export default Router;

我認為您對DS.Model有誤解,應該看看這些指南,特別是http://guides.emberjs.com/v2.1.0/models/finding-records/

假設正確設置了路由和模板,並且ApplicationAdapter擴展了RESTAdapter / ActiveModel Adapter (請參閱此處的 JSON格式),我相信問題出在models/jobs.js ,這是不必要的。

當您執行store.findAll('job')時,Ember Data應該向/jobs發出正確的請求。 嘗試刪除models/jobs.jsadapters/jobs.js ,然后執行以下操作:

// routes/external/jobs.js
import Ember from 'ember';

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

如果這樣做沒有幫助,請嘗試同時發布路由器和出現的任何錯誤。

假設您的模型可以從API正常加載,我認為問題出在模板中。

根據文檔,您需要顯式訪問每個模型的屬性。 http://guides.emberjs.com/v2.1.0/templates/displaying-a-list-of-items/

因此,請使用{{job.title}}而不是{{title}} {{job.title}}

{{#each model as |job|}}
   <a href={{job.title}}>
      <div class="info">
          <div class="title">{{job.body}}</div>
      </div>
   </a>
{{/each}}

這解決了

用以下行添加文件serializers/job.js

import DS from 'ember-data';

   export default DS.ActiveModelSerializer.extend(DS.EmbeddedRecordsMixin, {

});

我沒有構建api,但我注意到某些id強調了約定。 有關更多信息,請參見http://ember-doc.com/classes/DS.ActiveModelSerializer.html

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM