Emberjs:为其他路线加载数据

时间:2013-04-02 09:13:14

标签: javascript ember.js

更新到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;
}

一切都在预期运行,但我的问题是当从loadStuff调用时,不会填充YaySecondController上的内容。如果我在YaySecondRoute上将loadStuff的 controller.set('stuff',App.Stuff.find())内容添加到setupController,数据将加载OK。但随后我尽快加载了数据。有什么想法吗?

1 个答案:

答案 0 :(得分:0)

所以,这在今天更新到emberjs-rc.2时解决了。我还是新手,所以我不知道发生了什么。无论如何,这是正确的方法吗?这似乎有些麻烦。