Vue JS - как просмотр вычисленного запускает его, когда поле, используемое в нем, обновляется? - PullRequest
0 голосов
/ 07 ноября 2018

У меня есть вычисляемое поле, которое устанавливает свойство данных, называемое «завершено», в зависимости от того, было ли заполнено текстовое поле в вопроснике:

setCompleted: function () {
            this.completed = this.required && this.textAnswer !== '';
    },

На это вычисление нет ссылок в моем html, и он используется исключительно для установки завершенного свойства. Единственное свойство, которое может измениться из-за пользовательского ввода, это textAnswer, привязанное как модель к текстовому вводу.

У меня есть пустой наблюдатель, установленный для наблюдения за этим вычисленным полем, например:

setCompleted: function () {
    },    

При наборе часов это работает и setCompleted обновлений, но без часов setCompleted не попадает при отладке, а завершенные не обновляются вообще.

У меня такой вопрос: как наблюдение за вычисляемым обновляет его, когда обновляется поле, используемое в нем? С помощью набора наблюдения Vue наблюдает за каждым свойством внутри вычисленного на предмет изменения а затем запустить вычисление, когда один изменится?

Примечание. Я знаю, что могу реорганизовать это в просмотр textAnswer и вызов метода из этих часов, чтобы обновление завершилось, но я хочу знать, как этот код на самом деле работает и является ли это плохой практикой или фактически тем, что предполагалось разрешить с Vue.

Ответы [ 2 ]

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

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

computed: {
  completed: function () {
     return this.required && this.textAnswer !== '';
  },
},
watch: {
  completed: function(val) {
    console.log(val)
  }
}
0 голосов
/ 07 ноября 2018

Помогает ли это?

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

Из документации: https://vuejs.org/v2/guide/computed.html

Исходя из моего опыта, он переоценивает, когда свойство, используемое внутри, изменяется, пока наблюдатель возвращает значение, он проверяет, изменилось ли значение.

...