【问题标题】:Emberjs: Loading data for other routeEmberjs:为其他路线加载数据
【发布时间】:2013-04-02 09:13:14
【问题描述】:

更新到 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 调用时未填充。如果我将 controller.set('stuff', App.Stuff.find()) 的 loadStuff 内容添加到 YaySecondRoute 上的 setupController,数据将加载正常。但是随着数据尽快加载,我失去了冷静。有什么想法吗?

【问题讨论】:

    标签: javascript ember.js


    【解决方案1】:

    所以,今天更新到 emberjs-rc.2 时,这个问题自行解决了。我还是 ember 的新手,所以我不知道发生了什么。无论如何,这是正确的方法吗?看起来有点麻烦。

    【讨论】:

    • 我可以接受当前的解决方案,我只是想知道这是否可以以更简单的方式完成。不过,这没什么大不了的。
    猜你喜欢
    • 2021-12-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-29
    相关资源
    最近更新 更多