文書化されたmodel.reload()関数を使用してより多くのデータをポーリングしようとしています
App.ModelViewRoute = Ember.Route.extend({
actions: {
reload: function() {
this.get('model').reload();
}
}
});
しかし、次のようなエラーメッセージが表示されます...
undefined is not a function TypeError: undefined is not a function
これを行うためのより良い方法はありますか?ルートからこの方法でモデルにアクセスできないようです?
これがルーターです
App.Router.map(function() {
this.route('video', { path: '/videos/:video_id' });
});
これがルートです
App.VideoRoute = Ember.Route.extend({
model: function(params) {
return this.store.find('video', params.video_id);
},
actions: {
reloadModel: function() {
// PROBLEM HERE
// this.get('model').reload();
Ember.Logger.log('reload called!');
}
}
});
これがモデルです
App.Video = DS.Model.extend({
title: DS.attr('string'),
status: DS.attr('string')
});
そしてテンプレート
<script type="text/x-handlebars" data-template-name="application">
<h1>Testing model reloading</h1>
{{#link-to "video" 1}}view problem{{/link-to}}
{{outlet}}
</script>
<script type="text/x-handlebars" data-template-name="video">
<h1>Video</h1>
<h2>{{title}}</h2>
{{model.status}}
<p><button {{action 'reloadModel'}}>Reload model</button></p>
</script>
私はここで問題のjsbinを作成しました:
http://jsbin.com/wofaj/13/edit?html,js,output
リロードでこのエラーが発生する理由がよくわかりません。何かアドバイスをいただければ幸いです。
ありがとう
model
はEmber.Routeのフックとしてすでに存在しているため、プロパティとして取得することはできません。
代わりに、次のことができます。
_this.modelFor('video').reload();
_
技術的にはthis.get('currentModel').reload();
も実行できますが、これは文書化されておらず、将来的には利用できなくなる可能性があります。
ルートのrefresh
メソッドは、あなたが求めていることを実行します
App.VideoRoute = Ember.Route.extend({
model: function(params) {
return this.store.find('video', params.video_id);
},
actions: {
reloadModel: function() {
this.refresh()
}
}
});