Emberjs:加载其他路由的数据

Emberjs: Loading data for other route

本文关键字:数据 路由 其他 加载 Emberjs      更新时间:2023-09-26

更新到emberjs-rc.2时自行解析。看到答案。

在我的应用程序中,我有2个具有向导功能的页面。在第一页上,用户将提供一些数据,在下一页上,用户将在基于第一页上的数据构建的列表中选择一个项目。我要做的是,只要第一个页面上所需的数据有效,就开始加载第二个页面的数据,即使用户仍然在第一个页面上。这是因为构建列表服务器将花费一些时间,并且我希望在过渡到下一页时准备好数据。

这两个页面/路由嵌套在同一个资源下。

我的路线:

App.YayRoute = Ember.Route.extend({
  events: {
    dataValid: function() {
      this.controllerFor('yaySecond').send('loadStuff');
    }
  }
});
App.YaySecondRoute = Ember.Route.extend({
  events: {
    loadStuff: function() {
      this.controller.set('stuff', App.Stuff.find());
    }
  }
});

在YayFirstController中,我正在观察相关数据并在它是时执行this.send('dataValid')。顶部路由YayRoute很好地拾取了这个,并在第二个路由上触发loadStuff。App.Stuff.find()如下所示

find: function() {
    var result = Ember.A([]);
    $.getJSON(url, function(data) {
        // populate result
    });
    return result;
}

一切都在预期时运行,但我的问题是,YaySecondController上的东西是不填充时从loadStuff调用。如果我添加控制器。在YaySecondRoute上设置('stuff', App.Stuff.find()) loadStuff的内容到setupController,数据将加载好。但这样我就失去了加载数据的乐趣。什么好主意吗?

所以,当更新到emberjs-rc时,这个问题就解决了。2今天。我还是新人,所以我不知道发生了什么。不管怎样,这是正确的方法吗?看起来有点麻烦。