Как привязать наблюдателей Vue js к массиву объектов - PullRequest
0 голосов
/ 03 июня 2019

У меня есть массив, который содержит много таких объектов:

[{x: updateX}, {y: updateY}]

Используя этот массив, я хочу автоматически генерировать наблюдатели Vue js следующим образом:

      watch: {
     x(){
         this.updateX()
       },
     y(){
         this.updateY()
       }
 } 

Я знаю только, что vue хранит наблюдателей как массив.

Ответы [ 2 ]

1 голос
/ 03 июня 2019

Вы можете использовать для этого глубокий наблюдатель

watch: {
  arr: {
     handler(val){
       // do stuff
     },
     deep: true
  }
}
1 голос
/ 03 июня 2019

вы можете создать массив и вернуть из него список функций примерно так:

data(){ return {
  watcherArray: [];
}
}
methods: {
   pushToWatchersArray() {
      this.watcherArray.push(someValue);
    }
    returnNewWatchers(){
       return { this.watchersArray.map(watcher => return `${watcher}(){ 
       this.updatewatcher()}
    }
watch: {
    [...this.returnNewWatchers()]
 } 

Возможно, вам также понадобится переопределить компонент при смене наблюдателей, я не уверен в этом, вКроме того, вам может понадобиться отдельный наблюдатель, чтобы следить за изменениями в массиве, чтобы выполнить это повторное рендеринг.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...