我正在构建一个对象来处理一个计时方法,以控制使用服务器中的数据刷新模型。这非常简单。但是,我必须重新定义路由器中的刷新对象,我将使用当前模型对其进行实例化。这使得它成为一个单独的对象失败了。我的目的是在多个页面上使用它。
我从这个对象开始:
App.ModelRefresh = Ember.Object.extend({
init: function(callback) {
this.timer = setInterval(this.refresh.bind(this), App.POLL_INTERVAL);
this._super();
},
stop: function(){
console.log('stop');
clearInterval(this.timer);
},
refresh: function(){
console.log('refreshing');
}
});
然后在路由器中创建它以处理重新加载。再如此:
App.PublishablesRoute = Ember.Route.extend({
model: function() {
return App.Publishable.fetch();
},
setupController: function(controller, model) {
controller.set('model', model);
var modelRefresh = App.ModelRefresh.create('something');
this.set('modelRefresh', modelRefresh );
modelRefresh.refresh = function() {
model.reload();
};
},
deactivate: function() {
this.get('modelRefresh').stop();
}
});
我想要做的不是修改modelRefresh
,而是添加当前的model.reload()
,而是让Object在实例化时获取当前模型的路由器。我已经尝试将其作为回调传递,但它根本不起作用。
任何想法都会有所帮助。
答案 0 :(得分:1)
我可能会建立某种调度程序,其目的是处理重新加载,调度等。
然后您可以订阅重新加载器并在需要停止时取消订阅。然后,您可以避免在多个位置重新加载模型。
或者我将逻辑添加到mixin然后将mixin添加到您的模型中,以便您可以调用model.startReloading(2000)
等