Доступ к объекту вычисляемых свойств экземпляра Vue

Компоненты Vue предоставляют this.$data. Есть ли способ получить доступ к вычисляемым свойствам аналогичным образом?

Они не выставляются на $data, и нет такого понятия, как this.$computed


person Johan    schedule 14.08.2017    source источник
comment
this.nameOfComputedProperty   -  person thanksd    schedule 14.08.2017
comment
@thanksd Как следует из вопроса, я прошу набор вычисленных свойств, а не их явный выбор.   -  person Johan    schedule 14.08.2017
comment
ах ладно это было не ясно для меня   -  person thanksd    schedule 14.08.2017
comment
@thanksd Должен был быть более ясным в вопросе, извините :)   -  person Johan    schedule 14.08.2017


Ответы (1)


Не существует встроенного способа доступа к объекту с вычисляемыми свойствами экземпляра Vue.

Если вам действительно нужен объект с именем и значениями вычисляемого свойства для целей тестирования, вы можете определить свое собственное свойство $computed, используя информацию в свойстве _computedWatchers. Это может быть привередливо, и я бы не стал использовать его в производственном коде.

Object.defineProperty(Vue.prototype, '$computed', { 
  get() { 
    let computed = {};
    Object.keys(this._computedWatchers).forEach((key) => {
      computed[key] = this._computedWatchers[key].value;
    })
    return computed;
  }
})

new Vue({
  el: '#app',
  data() {
    return {
      foo: 1,
    }
  },
  computed: {
    bar() {
      return this.foo * 2;
    }
  },
  mounted() {
    console.log(this.$computed)
  }
})
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.4.2/vue.min.js"></script>
<div id="app">{{ bar }}</div>

person thanksd    schedule 14.08.2017