【问题标题】:EmberJS doesn't populate camelCased attributesEmberJS 不填充 camelCased 属性
【发布时间】:2017-05-22 04:49:52
【问题描述】:

出于某种原因,EmberJS 不会填充用 camelCase 编写的模型属性。我使用 JSONAPIAdapter(RESTAdapter 不是一个选项)。 这是我的模型:

import DS from 'ember-data';
export default DS.Model.extend({
    shortName: DS.attr('string'),
    fullName: DS.attr('string'),
    inn: DS.attr('string'),
    kpp: DS.attr('string'),
    checkingAccount: DS.attr('string'),
    correspodentAccount: DS.attr('string'),
    bik: DS.attr('string'),
});

我的车把模板:

{{#each model as |company|}}
        <tr class="companies-list__item">
            <td class="companies-list__property">{{company.shortName}}</td>
            <td class="companies-list__property">{{company.inn}}</td>
            <td class="companies-list__property">{{company.kpp}}</td>
            <td class="companies-list__property">{{company.checkingAccount}}</td>
            <td class="companies-list__property">{{company.correspodentAccount}}</td>
            <td class="companies-list__property">{{company.bik}}</td>
        </tr>
{{/each}}

来自服务器的答案如下所示:

{
   type: 'company',
   id: 4,
   attributes: {
          shortName: 'Рога и копыта',
          fullName: 'ООО Рога и копыта',
          inn: '312312312',
          kpp: '767675572',
          checkingAccount: '3123145124',
          correspodentAccount: '6547598',
          bik: '76979356'
   },
 },

它确实填充了 inn、kpp、bik,但不使用其他。有什么问题?

【问题讨论】:

  • 你有访问服务器的权限吗?

标签: json ember.js ember-data json-api


【解决方案1】:

Ember.js 依赖于命名约定,它期望多单词驼峰式(例如 firstName)模型属性映射到多单词下划线分隔小写属性(例如 first_name) JSON 响应。如果您的 JSON 为您提供 firstName,或者在您不控制后端 API 的情况下提供任何不在此约定中的内容,您可以选择定义一个映射,告诉您的适配器在 JSON 响应中查找特定键并将其映射到给定模型中的属性。

你可以这样做:

DS.RESTAdapter.map('App.User', { 
    shortName: { key: 'shortName' },
    fullName: { key: 'fullName' }
});

【讨论】:

    【解决方案2】:

    当使用 JSONAPIAdapter/Serializer 时,我认为 JSON 有效负载中属性的默认值是 dasherized(kabob-case)。请参阅https://guides.emberjs.com/v2.10.0/models/customizing-serializers/,您可能需要进行一些自定义。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-09-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多