0

我可能已经尝试了无数种方法,但没有什么是有效的。我的最后一次尝试 - 效果不错,但有一个丑陋的权衡是这样的:

App.UsersRoute = Em.Route.extend({
  model: function() {
    return App.User.find({}).then(function(response) {
      return response;
    });
  }
});

这个问题 -我很想知道它是在进行同步调用。在返回之前,我的 HTML/DOM 不会完成加载。

我想知道的另一件事是,如果我从 find 中省略空对象 {} - 实际上会立即调用 promise 函数。我保证!

现在我尝试过的其他方法如下,它们都有缺陷:

  • 在控制器上观察 content.lastObject.isLoaded
  • 从 Ember.ArrayController 实现 arrayContentDidChange - 显然,随着数组被填充,这会被触发多次。-
4

2 回答 2

1

我可能已经尝试了无数种方法,但没有什么是有效的。

我不知道您是否尝试过afterModel使用路由功能,该功能是不久前添加的,可在 rc6 中使用:

App.UsersRoute = Em.Route.extend({
  afterModel: function(users, transition) {
    console.log(users.get('length'));
  }
});

有关钩子的更多信息,请参见此处beforeModelafterModel

我还放了一个jsbin来玩。

希望能帮助到你。

于 2013-08-11T14:03:00.953 回答
-1

你可以在这里阅读https://github.com/emberjs/data/pull/735 有一个像你的 Ember-data RecordArray isLoaded Status这样的问题。您也可以尝试观察isUpdating是错误的,而不是isLoading

于 2013-08-11T06:06:19.423 回答