Угловые метеорные диаграммы для эффективной обработки нескольких реактивных переменных
Я играю с 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
имеет много свойств для проверки?