Javascript: возвращать нарезанные элементы - PullRequest
0 голосов
/ 25 января 2019

Я использовал функцию .slice () в своем коде для нарезки массива из 10 элементов, которые я получаю в ответ на запрос API (.get), это позволяет мне показать 9 из 10.

Но я бы хотел вернуть десятый элемент, когда нажимаю на кнопку.

Например, если запрос API имеет в общей сложности 19 элементов, а я делю их на части как (0, 9), то после нажатия на кнопку он должен добавить 10-й элемент к следующим 9 и т. Д.

Ниже приведен код Javascript, который я использую:

getProjects: function() {
      this.loading = true;

      let url = this.craftURL();

      axios.get(url, {
        headers: {
          Accept: "application/json"
        }
      }).then(response => {
        this.loading = false;
        console.log("Response", response.data)

        if (response.data.projects) {
          response.data.projects.project.slice(0, 9).forEach(project => {
            this.projects.push(this.parseProject(project));
          });
        } else if (response.data.search.response) {
          if (response.data.search.response.numberFound == 0) {
            this.noProjects = true;
            return;
          }

          response.data.search.response.projects.project.slice(0, 9).forEach(project => {
            this.projects.push(this.parseProject(project));
          });

          if (this.projects.length == response.data.search.response.numberFound) {
            this.hideButton = true;
            return;
          } else {
            this.hideButton = false;
            return;
          }
        }
      }).catch(error => {
        console.log(error);
      });
    },

this.projects - это пустой массив, который я добавил в данные.

Большое спасибо!

1 Ответ

0 голосов
/ 25 января 2019

Насколько я понимаю, вы хотите реализовать нумерацию страниц.Вы можете установить пропуск и ограничение и получить желаемый объем данных.Пожалуйста, обратитесь к документации для пропуска и ограничения для идеи.

 loadMore() {
     this.data = {
          user:this.username,
          skip: this.s+=1,
          limit: this.l+=1
        }
    this.service.getabcd(data).subscribe(x=>{
    this.project=x;
}

А в бэкэнде вы устанавливаете предел и пропускаете вот так

router.post('/abcs/', async (req, res) => {
    const ab= await XYZ.find({ username: req.body['user'] 
     }).skip(req.body.skip).limit(req.body.limit);       
    res.json(ab);
});
...