#vue.js
#vue.js
Вопрос:
Я пытаюсь выполнить разбивку на страницы, но я не могу указать динамический итог, который я делаю так:
<v-pagination v-model="currentPage"
:page-count="total"
:classes="bootstrapPaginationClasses"
:labels="paginationAnchorTexts"
></v-pagination>
Как вы можете увидеть общее количество ОС в:page-count, это динамическое общее количество, потому что я получаю данные из базы данных, мой vue-код такой:
<script>
import vPagination from 'vue-plain-pagination';
export default {
created() {
this.getPosts();
},
methods: {
getPosts() {
fetch('/api/bank')
.then(response => response.json() )
.then(json => {
this.posts = json.data.data;
this.total = json.data.last_page;
this.current_page = json.data.current_page;
});
}
},
components: { vPagination },
data: function() {
return {
postsSelected: "",
posts: [],
currentPage: 1,
total: this.total,
bootstrapPaginationClasses: {
ul: 'pagination',
li: 'page-item',
liActive: 'active',
liDisable: 'disabled',
button: 'page-link'
},
paginationAnchorTexts: {
first: 'Primera',
prev: 'amp;laquo;',
next: 'amp;raquo;',
last: 'Última'
}
}
}
}
</script>
Как вы можете видеть, я использую выборку для получения данных из базы данных, а затем разделяю их на разные данные, такие как total, и я использую эту информацию внутри data: function() {} .
Как вы можете определить total это так: total: this.total потому что я хочу получить общее число, но когда я это делаю, я получаю эту ошибку:
[Vue warn]: Invalid prop: type check failed for prop "pageCount". Expected Number with value NaN, got Undefined
и я думаю, что это потому, что:
- total: this.total в функции data() {} является плохим или:
- как я могу поместить динамическую переменную total в
Как я мог это исправить?
Спасибо!
Комментарии:
1. Не создавайте свойства данных с тем же именем, что и props
2. @Phil У меня такая же проблема, и я обновляю код, ошибка: [Предупреждение Vue]: неверный реквизит: проверка типа не удалась для реквизита «pageCount». Ожидаемое число со значением NaN, не определено, что это может быть?
3. В свойстве data просто добавьте
total: 0,
. Надеюсь, это решит вашу проблему. Также проверьте, получаете ли вы данные из api, и выведите значениеjson.data.last_page
просто для уверенности.4. @beingyogi но если я добавлю total: 0, как я могу узнать общее количество данных из базы данных? потому что я получаю эти данные из fetch this.total
5. Вы можете подробно ознакомиться с реактивностью vue здесь
Ответ №1:
Если вы хотите узнать данные, полученные из API, вы можете консольно регистрировать возвращенные данные следующим образом:
getPosts() {
fetch('/api/bank')
.then(response => response.json() )
.then(json => {
console.log(json.data)
this.posts = json.data.data;
this.total = json.data.last_page;
this.current_page = json.data.current_page;
});
}
Кроме того, у вас не должно быть атрибута data и атрибута props с одинаковым именем! Поэтому измените атрибут total
data на другое имя и вместо этого инициализируйте его значением 0.
На самом деле, вам вообще не нужно заботиться о передаче Prop total, поскольку ваш метод getPosts не зависит от Prop! Таким образом, у вас могут быть только total: 0
данные, и это должно решить ваши проблемы