JS Как проверить, изменилась ли переменная класса? - PullRequest
0 голосов
/ 16 ноября 2018

У меня есть переменная в классе, которая может измениться в любое время? Есть ли способ, которым js может реактивно проверить, изменилось ли оно и выполняет ли оно функцию? У меня нет контроля над объектом, я могу просматривать его и изменять, но мой код - не единственный код, который может это сделать.

Ответы [ 2 ]

0 голосов
/ 16 ноября 2018

В Метеоре (вы отметили его) у вас есть Tracker, который автоматически запускает функцию, если реактивный источник данных был изменен, независимо от того, кем или чем.

Чтение: https://docs.meteor.com/api/tracker.html

Теперь в Blaze (который вы также пометили) у вас также есть шаблон внутреннего трекера:

Template.myTemplate.onCreated(function (){
  const instance = this

  instance.autorun(() => {
    // this behaves like Tracker.autorun
  })
})

Как сделать переменную реактивной?

Если вы обращаетесь к реактивной переменной внутри автозапуска, вы активируете данную функцию.Нормальный Объект не является реактивным.В Meteor вы можете хранить данные, используя

ReactiveVar: https://docs.meteor.com/api/reactive-var.html

ReactiveDict: https://atmospherejs.com/meteor/reactive-dict

(Mini) Mongo Cursor: https://docs.meteor.com/api/collections.html#mongo_cursor

Доступ к данным из этих хранилищ данных запускает вычисления ваших трекеров.

Чтение этих документов должно прояснить понимание реактивной концепции Метеора, и вы сможете написать реактивный шаблон.

0 голосов
/ 16 ноября 2018

Если вы являетесь владельцем этого объекта, вы можете использовать Proxy объект, который будет использоваться вместо исходного объекта. И в этом случае вы будете иметь полный контроль над каждой производимой операцией с вашим объектом

...