我正在尝试使用记录的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>
我在这里提出了一个问题:
http://jsbin.com/wofaj/13/edit?html,js,output
我真的不明白为什么重装会给我这个错误。任何建议都将不胜感激。
由于
答案 0 :(得分:13)
路线的refresh
方法可以完成
App.VideoRoute = Ember.Route.extend({
model: function(params) {
return this.store.find('video', params.video_id);
},
actions: {
reloadModel: function() {
this.refresh()
}
}
});
答案 1 :(得分:12)
由于model
已作为Ember.Route上的钩子存在,因此您无法将其作为属性。
相反,您可以执行以下操作:
this.modelFor('video').reload();
从技术上讲,你也可以做this.get('currentModel').reload();
,但这种情况没有记录,可能在将来无法使用。
答案 2 :(得分:0)
route model function提供了一个加载控制器数据的钩子。 ember guide上有一个特定的部分。
1)如果您想访问您的内容,那就像是:
reload: function() {
this.controller.get('content');
}
2)重新加载是一种可用于ember-data对象的方法。在您的示例中,您正在加载一个js对象({id:2,title:&#34;测试视频标题2&#34;,状态:&#34;下载&#34;})。