javascript - Ember - 从 Ember 数据数组中获取值

标签 javascript ember.js ember-data

我试图在 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/

相关文章:

javascript - 执行 javascript 生成器的惯用模式

ruby-on-rails - 在 Ember/Rails 应用程序中开发加载器 CSS 元素。它会在 codepen/jsfiddle 中正确显示,但不会在实际应用程序中显示。

javascript - 如何在 Controller 的 Ember.js 单元测试中设置模型数据

JavaScript 正则表达式 .*?

javascript - Angular.js 在范围更新后运行 ng-show 函数

javascript - 根据 Javascript 中的对象评估表中的数组

javascript - 我如何处理 ember.js 中的表单提交?

ember.js - Ember 升级破坏了一项测试,而且仅限于 Safari

ember.js - 模型测试中"Attempting to register an unknown factory"

javascript - 如何处理浏览器中显示数据的重负载处理