サーバーから適切なデータを取得する RestAdapter を備えたアプリがあります。
App.AFile= DS.Model.extend({
name: DS.attr( 'string' ),
...
App.Store = DS.Store.extend({
revision: 13,
adapter: DS.RESTAdapter.extend({url: "myapi"})
});
そして、このような地図:
App.Router.map(function() {
this.resource('allfiles', { path: '/allfiles' });
this.resource('onefile', {path: '/onefile/:onefile_id' });
そしてルートは次のように定義されます:
App.allfilesRoute = Ember.Route.extend({
model: function()
{
return App.AFile.find();
}
});
App.onefileRoute = Ember.Route.extend({
model : function(params)
{
return App.AFile.find(params.onefile_id);
}
});
そしてそれらのテンプレート:
<script type="text/x-handlebars" data-template-name="allfiles">
{{#each controller}}
{{#linkTo onefile this}}open{{/linkTo}}
{{/each}}
</script>
<script type="text/x-handlebars" data-template-name="onefile">
{{name}}
</script>
これは次のように機能します: ユーザーがアプリを開くと、open というリンクを含む allfiles テンプレートが表示されます。このリンクは、onefile というテンプレートを開き、onefile_id をそれに渡します。
アプリを開いて開くをクリックすると、動作し、1 つのファイルの適切な名前が表示されます。URL は #/onefile/1 に設定されます。1 は onefile_id です。それでうまくいきます。
しかし、ページ (#/onefile/1) を更新すると、名前よりも表示されなくなりました。
ID を返す前に onefileRoute モデル関数で何が起こっているかを確認しましたが、App.AFile で定義されているすべてのフィールドに null 値が含まれていることがわかりました。アプリが読み込まれた後、これらの値は App.AFile オブジェクトに正しく入力されますが、ビューには表示されません。
したがって、ビュー表示後に RestAdapter がデータを取得するように見えます。
それを機能させる方法は?