当ember数据/模型发生变化时触发警报

时间:2018-04-09 02:33:20

标签: ember.js ember-data ember-cli

我有以下路线,它将轮询模型并以给定间隔刷新数据。我正在尝试做的是在模型中有新记录时触发警报。我是新手,因此我无法确定如何触发网站范围内的警报而不必在每次模型刷新时触发它。我尝试在模型中使用'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);
   }
 })

1 个答案:

答案 0 :(得分:0)

我建议为此用例使用服务。您可以在需要数据的任何地方注入服务,并在服务中处理轮询。

然后,您可以像这样显示您的数据。

在您的组件文件中:

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文件中的计算属性访问数据