emberjs-rc.2 にアップデートしたら自己解決しました。答えを参照してください。
私のアプリケーションには、ウィザードのような機能を備えた 2 つのページがあります。最初のページで、ユーザーはいくつかのデータを提供し、次のページで、ユーザーは最初のページのデータに基づいて作成されたリスト内の項目を選択します。私がやろうとしているのは、ユーザーがまだ最初のページにいる場合でも、最初のページで必要なデータが有効になるとすぐに、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 はこれを拾い上げ、2 番目のルートで loadStuff をトリガーします。App.Stuff.find() は次のようになります
find: function() {
var result = Ember.A([]);
$.getJSON(url, function(data) {
// populate result
});
return result;
}
意図したとおりにすべてが実行されていますが、私の問題は、loadStuff から呼び出されたときに YaySecondController の内容が読み込まれないことです。YaySecondRoute の setupController にloadStuff の controller.set('stuff', App.Stuff.find())の内容を追加すると、データは正常に読み込まれます。しかし、すぐにデータが読み込まれることにクールさを失います。何か案は?