gpt4 book ai didi

javascript - ember 属性在 View 中不可用,仅 ID

转载 作者:行者123 更新时间:2023-12-03 06:57:55 25 4
gpt4 key购买 nike

不用说,我是 Ember 新手,只是想完成概念验证。已经获得了 EmberCLI 的一些帮助,但这对我来说是一个新的奇怪之处。

/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')
});

/适配器/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 可用且正确,但所有其他 attr 并未从 json 加载。如果我复制/粘贴 json 并在模型中手动设置它,它会按预期工作,那么来自模型存储或序列化器时是否会进行一些过滤?

最佳答案

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. 使您的 API JSONAPI 兼容,或者
  2. 使用不同的适配器和序列化器。

RESTSerializer/RESTAdapter 是一个简单的默认实现,可以处理如下结构:

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

而且它们是高度可定制的。

查看 official API用于文档。

关于javascript - ember 属性在 View 中不可用,仅 ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37191731/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com