Угловые метеорные диаграммы для эффективной обработки нескольких реактивных переменных

Я играю с angular-meteor и все еще пытаюсь понять, как использовать 3-стороннюю привязку. Как запустить метод, который проверяет несколько "реактивных" переменных?

Например, setVisibleLocation() Приведенный ниже метод необходимо будет выполнить повторно, если какое-либо из следующих значений изменилось, event.setting.isPublic, event.participantIds, event.location, event.address, event.neighborhood, Meteor.userId(), Последние несколько, возможно, не должны обновляться реактивно - перезагрузка страницы может быть приемлемой.

showExactLocation = (event, userId) ->
  return true if event.setting.isPublic
  return true if userId == event.ownerId
  return true if event.participantIds && ~event.participantIds.indexOf(userId)
  return false

setVisibleLocation = (event, userId) ->
  userId ?= Meteor.userId()
  if showExactLocation(event, userId)
    event.visible = {
      address: event.address
      marker: event.location
    }
  else
    event.visible = {
      address: event.neighborhood
      marker: utils.maskLatLon(event.location, event.title)
    }
  return event

Каковы наиболее эффективные шаблоны для обработки этого? Я могу придумать несколько вариантов.

this.autorun ()=>
  this.getReactively('event', true)
  setVisibleLocation(this.event)
  // plus any number of other methods that might need to update
  // based on changes to this.event properties

или же

this.autorun ()=>
  this.getReactively('event.setting.isPublic')
  this.getReactively('event.location')
  this.getCollectionReactively('event.participantIds')
  this.getReactively('event.address')
  this.getReactively('event.neighborhood')
  setVisibleLocation(this.event)
this.autorun ()=>
  // plus any number of other combination of reactive properties 
  // and methods that need to be rerun

Глубокие часы желательно, если event имеет много свойств для проверки?

0 ответов

Другие вопросы по тегам