计算 属性 未更新

Computed property not updating

我有一个奇怪的问题。我正在尝试做一个简单的时间跟踪应用程序。

所以我有这个表格。

<form class="form" @submit.prevent="saveHours">
    <div class="status">
        <div class="selector" v-for="(select, index) in select_all">
            <component :is="select" :id="index" @percentage="trackTime"></component>
        </div>
    </div><!-- /.status -->
    <div class="form-submit">
        <button type="submit" class="form__submit">
            <span v-if="loading">Guardando...</span>
            <span v-else>Guardar</span>
        </button>
    </div>
</form>

这是我的 vue 代码

export default {
    name: 'home',
    data() {
        return {
            select_all: [Selector],
            loading: false,
            allTimes: [],
            saveForm: []
        }
    },
    components: {
        Selector
    },
    computed: {
        calculateTotal() {
            return this.allTimes.reduce((accumulator, currentValue) => parseInt(accumulator) + parseInt(currentValue), 0);
        }
    },
    methods: {
        addNewSelector() {
            this.calcTotal();
            this.select_all.push(Selector)
        },
        trackTime(time, index, proyecto) {
            this.currentTime = time;
            this.allTimes[index] = time;

            const data = {
                time,
                proyecto
            }

            this.saveForm[index] = data;
        },
        saveHours() {
            const currentWeek = moment(new Date()).format('w');
            const diverRef = db.collection('divers').doc(firebaseAuth.currentUser.email);
            const currentWeekRef = diverRef.collection('reportes').doc(`semana_${currentWeek}`);
            var self = this;
            currentWeekRef.get().then(function(doc) {
                if ( doc.exists ) {
                    console.log('Ya registraste tus horas');
                } else {
                    currentWeekRef.set({
                        data: self.saveForm
                    })
                }
            });
        },
    }
}

我有一个组件叫做allTimes数组。

我正在尝试使用计算的 属性 calculateTotal 将时间加在一起,以便我知道用户何时完成了 100% 的时间。但是没有更新。

真的很奇怪,如果我将它用作一种方法,它就像一个魅力,但它对我不起作用,因为我希望它在用户输入时更新,因为我正在使用一个组件我无法使用 keyup 事件的输入。

几个小时以来,我一直在努力解决这个问题,但一无所获。谢谢!

如果有人遇到同样的问题,Sergeon 和 Roy J 就对了。

我在做这个

this.allTimes[index] = time;

这让 Vue.js 变得一团糟。我将代码更改为

this.allTimes.splice(index, 1, time)

现在效果很好。

谢谢