通过当前路由器's模型转换为Ember.js中创建的对象
Passing current router's model into a created object in Ember.js
我正在构建一个对象,该对象处理一种定时方法,以控制用服务器中的数据刷新模型。它非常简单。然而,我必须在路由器内重新定义刷新对象,在那里我用当前模型实例化它。这违背了将其作为单独对象的意义。我打算在多个页面上使用它。
我从这样的对象开始:
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在安装时获得当前模型的路由器。我试过将它作为回调传递,但它根本不起作用。
任何想法都会有所帮助。
我可能会建立某种调度器,其目的是处理重新加载、调度等。
然后你可以订阅重新加载程序,并在该停止时取消订阅。这样你就可以避免在多个地方重新加载模型。
或者,我会将逻辑添加到一个mixin中,然后将该mixin添加到您的模型中,这样您就可以调用model.startReloading(2000)
等
相关文章:
- Ember.js:将Em.$.getJSON转换为promise并将响应绑定到控制器上下文的正确方法
- ember.js:转换到相同的路由会产生堆栈溢出问题
- 转换Ember中的JSON命名模式
- 通过当前路由器's模型转换为Ember.js中创建的对象
- 如何在Ember中转换到另一个路由时调用一个方法
- Ember添加了对转换调用上下文(路由/控制器)的检查
- i18n转换无法使用ember-断言失败:缺少键的转换
- Ember.js处理View事件后转换到路由
- 从父级转换时,不会触发 Ember 子路由模型方法
- Ember.js从回调转换后
- 将本机数组/对象转换为 Ember.Array/Ember.Object 的最佳实践
- 从路由转换不会删除 Ember.js 中退出路由的控制器观察器
- Ember.js-将仅显示模板转换为使用视图
- 如何从Ember中的表单提交转换路线
- 如何在使用Ember Auth成功登录时转换为root用户
- Ember路由从一个嵌套对象转换到另一个
- Ember模块转换器
- 在保存新的模型实例之后,在Ember.js中转换到路由之前,更新资源模型
- 使用新查询参数执行完整路由转换时Ember TransitionAborted
- XHR似乎不会在与Ember转换时开火