繁体   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