我试图在 Controller 中循环 Ember 中的一些对象,并返回其名称属性的数组。然而,我对 Ember 从 findAll 函数返回的内容感到困惑。
在 Controller 中,我有以下功能 -
possibleGenres: function() {
var genres = this.store.findAll('genre');
var genreNames = genres.map(function(item, index, enumerable){
return item.get('name');
});
return genreNames;
}.property(),
记录流派.get('length') 给我 0。
我已经证明 findAll 函数中存在可用的流派,因为当仅从 findAll 函数返回返回的流派时,它们会显示在模板中。
我是否误解了有关 Ember Controller 的一些重要内容?
一如既往,我们非常感谢任何帮助。
最佳答案
正如其他人所说,问题在于 findAll
返回一个 promise ,因此您必须使用 .then()
等到 promise 得到解决之后才可以使用数据。
我认为解决这个问题的更简洁的方法是设置 genres
作为属性(property),然后有 genreNames
作为观察 genres
的计算属性大批。请注意,当计算属性返回 promise 时,Ember 会自动解开 promise ,因此您不必使用 .then()
在这种情况下:
export default Ember.Controller.extend({
genreNames: Ember.computed.mapBy('genre', 'name'),
genres: function() {
return this.store.findAll('genre');
}.property()
});
关于javascript - Ember - 从 Ember 数据数组中获取值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28236366/