在Emberjs中每隔X分钟重新加载模型中的数据

时间:2016-09-02 15:42:28

标签: ember.js ember-data

我正在构建一个组件,它将IP作为输入并返回该计算机的错误日志。我已经设置了我的模型和适配器并且它们可以工作,但是我想每隔几分钟重新加载一次数据以查看是否有新消息。

我的组件是这样的:

import Ember from 'ember';

export default Ember.Component.extend({
  init(){
    this.logMessages = this.get('store').query('log', {ip : this.attrs.ip.value});
    this._super(...arguments);
  },

  didLoad: function(){
    var self = this;
    Ember.run.later(function(){self.logMessages = self.get('store').query('log', {ip : self.attrs.ip.value}); console.log("reload");}, 3000);
  }
});

出于某种原因,我从未看到run.later实际运行,也没有出现错误或警告。

2 个答案:

答案 0 :(得分:2)

我强烈建议使用ember-concurrency(http://ember-concurrency.com/)。您可以设置定期运行document.addEventListener('deviceready', function() { var db = window.sqlitePlugin.openDatabase({name: 'test.db', location: 'default'}); db.transaction(function(tr) { tr.executeSql("SELECT upper('Test string') AS upperString", [], function(tr, rs) { console.log('Got upperString result: ' + rs.rows.item(0).upperString); }); }); }); 查询的任务,并让ember-concurrency为您处理生命周期挂钩。类似的东西:

store

答案 1 :(得分:1)

您想要使用不同的生命周期钩子。据我所知,没有didLoad,但你可以根据你的确切需要使用didRender,willRender或didInsertElement。我还会使用其中一个destroy钩子移除计时器,否则当组件被移除时你会让计时器运行。以下是生命周期钩子的概述:

https://guides.emberjs.com/v2.6.0/components/the-component-lifecycle/