Ember-Data objectAt()获取第一个结果不起作用

Ember-Data objectAt() to get first result does not work

本文关键字:第一个 结果 不起作用 获取 objectAt Ember-Data      更新时间:2023-09-26

我正在用数据填充两个模板:第一个模板有关于模型的详细信息(称为Slider),第二个模板有最近5个滑块的列表。

问题是,当我对结果使用objectAt(0)时,模型没有正确应用于模板。列表的另一个模板填充。我的意思是:

App.IndexRoute = Ember.Route.extend({
  setupController: function() {
    var sliders = App.Slider.find({ limit: 5 });
    this.controllerFor('indexSlider').set('model', sliders.objectAt(0));
    this.controllerFor('indexSliders').set('model', sliders); // this works fine and loads the data into the template
  }
});

这段代码不起作用。但是,当我用以下内容替换indexSlider模型时,它确实可以工作:

App.IndexRoute = Ember.Route.extend({
  setupController: function() {
    var sliders = App.Slider.find({ limit: 5 });
    this.controllerFor('indexSlider').set('model', App.Slider.find(52));
    this.controllerFor('indexSliders').set('model', sliders);
  }
});

…其中52是第一个结果的ID。这让我认为objectAt并没有真正正确地在模板上渲染模型,或者我只是做错了吗?

在尝试访问第一个对象之前,您需要等待find加载完成。您可以使用didLoad事件:

App.IndexRoute = Ember.Route.extend({
  setupController: function() {
    var sliders = App.Slider.find({ limit: 5 });
    sliders.one('didLoad', this, function() {
      this.controllerFor('indexSlider').set('model', sliders.objectAt(0));
    });
    this.controllerFor('indexSliders').set('model', sliders);
  }
});