【问题标题】:How can I analyze Ember Data array elements (computed property?)?如何分析 Ember Data 数组元素(计算属性?)?
【发布时间】:2015-09-11 06:55:57
【问题描述】:

我想为 Ember Data 记录数组的每个元素创建唯一的缩写。例如,假设我们在 Persons 表中有以下记录:

name: Mike Jones
department: IT

name: Mike Smith
department: IT

name: John Doe
department: Accounting

name: Jane Doe
department: Accounting

我想要的是这样的输出:

IT
MJ: Mike Jones
MS: Mike Smith

Accounting
JoD: John Doe
JaD: Jane Doe    

如您所见,每个人的唯一缩写只能通过分析数组中的所有项目来分配。

这有点像在 Ember 文档中计算剩余待办事项的数量:http://guides.emberjs.com/v2.0.0/object-model/computed-properties-and-aggregate-data/

但是,该指南描述了使用控制器,据我了解,它已经过时,并且没有涉及使用 Ember Data。

我假设我的模板看起来像这样,但我会在我的路线中添加什么?

{{#each model as |department|}}
{{department.name}}
{{#each department.persons as |person|}}
{{person.computedAbbreviation}}: {{person.name}}
{{/each}}
{{/each}}

【问题讨论】:

    标签: arrays ember.js properties ember-data computed-values


    【解决方案1】:

    您将需要使用帮助程序,因为这是一个演示问题:

    import Ember from 'ember';
    
    const { Helper: { helper } } = Ember;
    
    export function nameInitials([name]) {
      return name.match(/\b(\w)/g).join('').toUpperCase();
    }
    
    export default helper(nameInitials);
    

    您将在您的模板中使用它:

    {{name-initials person.name}}

    如果您想要人名的前 2 个字母,我们将不得不更改逻辑并诉诸 charAt,逻辑变为:

    export function nameInitials([name]) {
      let [firstName, lastName] = name.split(' ');
      return `${firstName[0].toUpperCase()}${firstName[1]}${lastName[0].toUpperCase()}`;
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-07-09
      • 2017-04-11
      • 1970-01-01
      • 2016-03-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多