我需要此数组作为参数,但是当我尝试使用它时,我只会收到一个观察者。如何使用数组的信息而不是观察者?
当我在从数据库检索信息的函数中console.log登录时,它会按原样显示数据。
我不知道该怎么办,我已经尝试了其他方法来解决这个问题,但是我并没有成功。

           <script>
            import { ClientTable } from 'vue-tables-2';
            import Vue from 'vue';
            import Multiselect from 'vue-multiselect';
            import options from './../../../commons/helpers/grid.config';
            import edit from './edit';

            Vue.use(ClientTable, options, false, 'bootstrap4', 'default');
            Vue.component('multiselect', Multiselect);

            export default {
              name: 'Reporting',
              removable: false,
              components: {
                edit,
              },
              showLoading: true,
              data() {
                return {
                  selected: null,
                  columns: ['period', 'costCenter', 'hours', 'actions'],
                  reportingsList: [],
                  periods: [],
                  totalHours: 0,
                  options: {
                    sortable: [],
                    columnsClasses: {
                      actions: 'action-column text-center',
                      period: 'period-column',
                      costCenter: 'costCenter-Column',
                      hours: 'hours-column',
                    },
                  },
                };
              },
              mounted() {
                this.getAll();
              },
              methods: {
                getTotalHours(reportings) {
                  let result = 0;
                  for (let i = 0, length = reportings.length; i < length; i += 1) {
                    result += reportings[i].hours;
                  }
                  console.log(result); //eslint-disable-line
                  console.log(this.reportingsList); //eslint-disable-line
                  this.totalHours = result;
                },
                getAll() {
                  const url = 'reportings/getAll';

                  this.$http().get(url).then((response) => {
                    this.reportingsList = response.data;
                    console.log(this.reportingsList.length);//eslint-disable-line
                  });
                  this.getTotalHours(this.reportingsList);
                }
            </script>

最佳答案

这是异步代码,this.getTotalHours将在this.$http.get完成之前执行。

您需要链接.then

 this.$http().get(url).then((response) => {
    this.reportingsList = response.data;
    console.log(this.reportingsList.length);//eslint-disable-line
    return response.data
  }).then(() => {
    this.getTotalHours(this.reportingsList);
  });

关于javascript - 我使用数组作为参数并收到观察者,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/50391439/

10-12 20:39