【问题标题】:Problems with paging in vuex store/actions [this.paginator is not a function]vuex store/actions 中的分页问题[this.paginator 不是函数]
【发布时间】:2019-03-05 02:34:32
【问题描述】:

当我在 [ACTYPE.GET_MOVIES] 中调用分页器函数时,我试图解决一个问题。

它向我显示以下错误:

TypeError: _this.paginator 不是 eval 中的函数(actions.js? 63e0: 13)

Store/Actions.js

import {ACTYPE} from './types/actions_types';
import {MUTYPE} from './types/mutations_types';
import {BASE_URL , TOP_MOVIES , QUERY_URL} from '../API_URLs/index';
import axios from 'axios';

const A = axios.create({ baseURL: String(BASE_URL) });

export const actions = {
  [ACTYPE.GET_MOVIES]({commit} , page){
  A.get(TOP_MOVIES).then((res) =>{
    console.log(res);
    const dataPaginated = this.paginator(res.data , page)
    commit(MUTYPE.SET_MOVIES_DATA , dataPaginated);
    commit(MUTYPE.IS_LOADING , false);
  }).catch((err) =>{
      console.log(err);
  });  
}, 

paginator(items, page, per_page){
  var page = page || 1,
  per_page = per_page || 10,
  offset = (page - 1) * per_page,

  paginatedItems = items.slice(offset).slice(0, per_page),

  total_pages = Math.ceil(items.length / per_page),

  paginContent = {
    page: page,
    per_page: per_page,
    pre_page: page - 1 ? page - 1 : null,
    next_page: (total_pages > page) ? page + 1 : null,
    total: items.length,
    total_pages: total_pages,
    data: paginatedItems
  };
  console.log("Paginate Item: " , paginatedItems);
  console.log("Pagin Content: " , paginContent);
  return paginContent.data;
 }, 

【问题讨论】:

  • 你的分页器函数是用 3 个参数定义的,你称之为传递两个参数......也许这就是问题所在?这里:const dataPaginated = this.paginator(res.data , page)
  • 是的,问题在于线
  • 那么你能通过添加第三个参数来解决它吗?如果是这样,我应该为您添加答案还是删除此问题?
  • 报错继续,其实其他两个参数都不需要传。只需将数组作为参数传递即可。
  • @JorgeCampos 我想做的是在 Home.vue 中调用它。 $ store.dispatch (ACTYPE.GET_MOVIES, this.page);但他一直在文件存储/actions.js中向我显示同样的错误

标签: javascript vue.js vuex pagination


【解决方案1】:

你应该改变你的paginator(items, page, per_page){ ...

function paginator(items, page, per_page){

这样声明就会被提升。如果不是 paginator 则不声明。

然后你可以删除this.paginator(res.data , page)中的this

完成后它应该可以工作

【讨论】:

  • 我使用 function paginator (items, page, per_page) {..} 修改了代码,但它显示了一个语法错误,我将其更改为 paginator: function (items, page, per_page) 但它显示我ReferenceError的错误:未定义分页器
  • 我的错,我没有意识到分页器在动作中。我会将它放在动作对象之外,因为它不是动作。然后其余的应该工作(使用之前提供的答案)
猜你喜欢
  • 1970-01-01
  • 2020-01-19
  • 2019-10-25
  • 1970-01-01
  • 2023-03-06
  • 1970-01-01
  • 1970-01-01
  • 2021-06-28
  • 2019-05-19
相关资源
最近更新 更多