我正在构建一个组件,它将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实际运行,也没有出现错误或警告。
答案 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/