ember 数据/模型发生变化时触发警报
Trigger alert when there is a change to ember data / model
我有以下路线,它将轮询模型并以给定的时间间隔刷新数据。我想要做的是在模型中有新记录可用时触发警报。我对此很陌生,所以我在弄清楚如何在整个站点范围内触发警报而不是在每次模型刷新时简单地触发它时遇到了一些麻烦。我尝试在模型中使用 'didCreate',但它似乎无法识别新记录。
import Route from '@ember/routing/route';
import Ember from 'ember'
export const pollInterval = 8000 // time in milliseconds
export default Route.extend({
model() {
return Ember.RSVP.hash({
pat: this.store.findAll('pat'),
appt: this.store.findAll('appt')
})
},
getSMS () {
return this.get('store').findAll('smstext')
},
onPoll () {
return this.getSMS()
.then((users) => {
this.set('currentModel', users)
})
},
afterModel () {
let smsPoller = this.get('smsPoller')
if (!smsPoller) {
smsPoller = this.get('pollboy').add(this, this.onPoll, pollInterval)
this.set('smsPoller', smsPoller)
}
},
setupController(controller, models) {
controller.set('huddle', models.huddleappt);
controller.set('pat', models.pat);
}
})
我建议为这个用例使用服务。您可以在需要数据的任何地方注入您的服务,并且在服务中您可以处理轮询。
然后您可以像这样显示您的数据。
在您的组件文件中:
import Component from '@ember/component';
import { inject as service } from '@ember/service';
import { computed } from '@ember/object';
export default Component.extend({
smsService: service(),
smsData: computed('smsService.data')
// ...
并且在您的模板中,您可以使用来自组件 js 文件
的计算 属性 访问您的数据
我有以下路线,它将轮询模型并以给定的时间间隔刷新数据。我想要做的是在模型中有新记录可用时触发警报。我对此很陌生,所以我在弄清楚如何在整个站点范围内触发警报而不是在每次模型刷新时简单地触发它时遇到了一些麻烦。我尝试在模型中使用 'didCreate',但它似乎无法识别新记录。
import Route from '@ember/routing/route';
import Ember from 'ember'
export const pollInterval = 8000 // time in milliseconds
export default Route.extend({
model() {
return Ember.RSVP.hash({
pat: this.store.findAll('pat'),
appt: this.store.findAll('appt')
})
},
getSMS () {
return this.get('store').findAll('smstext')
},
onPoll () {
return this.getSMS()
.then((users) => {
this.set('currentModel', users)
})
},
afterModel () {
let smsPoller = this.get('smsPoller')
if (!smsPoller) {
smsPoller = this.get('pollboy').add(this, this.onPoll, pollInterval)
this.set('smsPoller', smsPoller)
}
},
setupController(controller, models) {
controller.set('huddle', models.huddleappt);
controller.set('pat', models.pat);
}
})
我建议为这个用例使用服务。您可以在需要数据的任何地方注入您的服务,并且在服务中您可以处理轮询。
然后您可以像这样显示您的数据。
在您的组件文件中:
import Component from '@ember/component';
import { inject as service } from '@ember/service';
import { computed } from '@ember/object';
export default Component.extend({
smsService: service(),
smsData: computed('smsService.data')
// ...
并且在您的模板中,您可以使用来自组件 js 文件
的计算 属性 访问您的数据