Компоненты Vue предоставляют this.$data
. Есть ли способ получить доступ к вычисляемым свойствам аналогичным образом?
Они не выставляются на $data
, и нет такого понятия, как this.$computed
Компоненты Vue предоставляют this.$data
. Есть ли способ получить доступ к вычисляемым свойствам аналогичным образом?
Они не выставляются на $data
, и нет такого понятия, как this.$computed
Не существует встроенного способа доступа к объекту с вычисляемыми свойствами экземпляра 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>