Vue Использование вычисленных значений свойств в свойствах данных? - PullRequest
0 голосов
/ 07 ноября 2018

Я пытаюсь взять массив из вычисляемого свойства и добавить его в свойство данных в моем приложении Vue. Причина, по которой я это делаю, - метод, который я вызываю, мне нужна длина массива в этом вычисляемом свойстве. Итак, что у меня есть:

var app = new Vue({
    el: '#app',
    data() {
      return {
        //assigning the jobs JSON data to this variable
        jobs: jsonData,
        jobsFiltered: //this is where the computed property variable should go.

        locations: ['Chicago', 'Philly', 'Baltimore'],

        //Used to filter based on selected filter options
        selectedLocation: '',

        page: 1,
        perPage: 10,
        pages: [],
      }
    },

methods: {
            setPages () {
              this.pages = [];
              let numberOfPages = Math.ceil(this.jobs.length / this.perPage);
              for (let i = 1; i <= numberOfPages; i++) {
                this.pages.push(i);
              }
            },

            paginate (jobs) {
              let page = this.page;
              let perPage = this.perPage;
              let from = (page * perPage) - perPage;
              let to = (page * perPage);
              return  jobs.slice(from, to);
            },
        },

computed: {

  filteredJobs: function(){
    var filteredList = this.jobs.filter(el=> {
      return el.customText12.toUpperCase().match(this.selectedLocation.toUpperCase())
    });

    return this.paginate(filteredList);
  }

}


})

Так что мне нужно, чтобы мне нужно было установить переменную данных jobsFiltered для переменной в вычисляемых свойства FilterList. Причина, по которой мне это нужно, заключается в добавлении длины массива FilterList к переменной numberOfPages в методе setPages:

let numberOfPages = Math.ceil(this.jobs.length / this.perPage);

Так что там, где написано this.jobs.length, мне нужно вместо этого получить длину массива FilterList, и я не уверен, как это сделать, когда массив, который я пытаюсь получить, является вычисляемым свойством.

РЕДАКТИРОВАТЬ: Для большей ясности, я запускаю метод paginate для переменной FilterList в функции FilterJobs в вычисляемых свойствах. Итак, что он делает, так это запускает метод slice для этой переменной FilterList и дает мне только 10 элементов массива за раз. Поэтому, когда я делаю this.filteredJobs.length, он видит, что длина равна 10, и я не получаю полную длину. Когда мне действительно нужна длина массива до того, как на нем будет запущен метод слайса.

...