如何在Ember中通过索引访问模型数组

时间:2017-01-22 19:33:40

标签: ember.js ember-data ember-model

我无法通过模板中的索引访问EmberArray。这是我路线的一部分

model(){
  return RSVP.hash({
    games: this.store.findAll('game')
  })
}

这是模板的一部分

<div>
  First game: {{model.games.[0].name}}
</div>

呈现无输出。虽然如果我使用

迭代它
{{#each model.games as |game|}}
  <div>{{game.name}}</div>
{{/each}}

这很好用。知道我可能做错了什么,或者我应该做些什么不同?

由于

3 个答案:

答案 0 :(得分:2)

如果您不想迭代所有项目,并且如果您不介意在模板中明确地编写一些逻辑,here插件可能会很有用,例如访问一个具体的项目使用ember-composable-helpers给出数组,来自docs:

  

返回数组给定索引处的对象。

符号:

{{object-at index array}}

(如果你想显示第二个项目的名称)将是:

{{object-at 1 model.games}}

答案 1 :(得分:1)

您可以使用firstObject方法。

{{model.games.firstObject.name}}

答案 2 :(得分:1)

您可以创建帮助程序。像这样:

// app/helpers/array-index.js
import Ember from 'ember';

export default Ember.Helper.helper(function ([array, index]) {
  return array !== undefined && array[index] !== undefined ? array[index] : undefined;
});

与get:

一起使用
{{get (array-index model.games 1) 'name'}}

P.S。当我们谈论从Ember Data返回的集合时,那可能不是纯粹的js数组,而是ArrayProxy之类的东西。在这种情况下,您可能需要使用它的方法objectAt

// app/helpers/array-index.js
import Ember from 'ember';

export default Ember.Helper.helper(function ([array, index]) {
  return array && array.objectAt ? array.objectAt(index) : (array && array[index]);
});