[英]Model reloading with Ember Data
我正在嘗試使用記錄的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
我真的不明白為什么重裝給我這個錯誤。 任何建議將不勝感激。
謝謝
路線的refresh
方法將完成你所追求的目標
App.VideoRoute = Ember.Route.extend({
model: function(params) {
return this.store.find('video', params.video_id);
},
actions: {
reloadModel: function() {
this.refresh()
}
}
});
由於model
已作為Ember.Route上的鈎子存在,因此無法將其作為屬性。
相反,您可以執行以下操作:
this.modelFor('video').reload();
從技術上講,你可以這樣做this.get('currentModel').reload();
也是如此,但那是沒有證件的,將來可能無法使用。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.