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