Vue js Javascript контекст

148
23 июля 2019, 20:20

Есть задача касательно js, vuejs https://codepen.io/login2030/pen/VrxgPe. Объясните пожалуйста, почему задача решается правильно, если добавить console.log(this.deleted) или любую запись связанную с this.deleted во внутрь вычисляемого свойства count() ?

Answer 1

Почему не работает

Как говорится в доках, Vue плохо справляется с изменениями внутри массивов. Изначально свойство count зависит только от items.length:

count() {
  return this.items.length;
}

Следовательно, это свойство должно актуализироваться только тогда, когда произойдет изменение в объектах, от которых оно зависит - т.е. в items.length. Массив items не изменяется явным образом, поэтому Vue не может отследить изменение в items.length. Поэтому свойство count не обновляется.

Почему работает с this.deleted

В отличие от items, массив deleted изменяется явно (this.deleted = ...), и такое изменение Vue может отследить. Поэтому, когда в свойство count добавляется еще одна зависимость (от deleted), и после этого делается this.deleted = ..., то Vue видит, что одна из зависимостей обновилась, и обновляет свойство count.

READ ALSO
настройка css modules Webpack

настройка css modules Webpack

Пытаюсь подключить css modules в проект, но сыплется вот такая ошибка, что я делаю не так? "webpack": "312

163
Прототипное наследование

Прототипное наследование

Добрый ДеньИзучаю способы организации наследования в JavaScript и написал небольшой пример :

126
Django GIS и leaflet, как конвертировать zoom в radius?

Django GIS и leaflet, как конвертировать zoom в radius?

На клиенте я по умолчанию выставляю zoom равный 13:

133
Не работает context.scale(-1, 1);

Не работает context.scale(-1, 1);

Не работает contextscale(-1, 1) для отражения картинки на канвасе

125