Сначала я рассчитал pages
счет на основе длины items
и числа perpage
. После этого для каждой страницы я перечисляю items
и проверяю index
из item
в v-if
:
new Vue({
el: "#app",
data: {
perpage: 5,
items: {
"fruits": [{
"from": "Shanghai",
"to": "Houston",
"createdOn": "2019-02-20 17:02:45",
"threadId": "1234564534"
}, {
"from": "Mumbai",
"to": "Texas",
"createdOn": "2019-02-22 17:02:45",
"threadId": "223455678"
}],
"vegetables": [{
"from": "Barcelona",
"to": "Milan",
"createdOn": "2019-01-20 10:02:45",
"threadId": "45673456"
}],
"paper": [{
"from": "Kualalumpur",
"to": "Singapore",
"createdOn": "2019-02-01 12:02:45",
"threadId": "234222345"
}, {
"from": "Singapore",
"to": "Vancover",
"createdOn": "2019-01-20 11:02:45",
"threadId": "6756434343"
}],
"books": [{
"from": "Jibooty",
"to": "Ahmedabad",
"createdOn": "2019-02-10 17:02:45",
"threadId": "23456789"
}],
"toys": [{
"from": "Shanghai",
"to": "Houston",
"createdOn": "2019-02-20 14:02:45",
"threadId": "123434343"
}],
"electronics": [{
"from": "Somalia",
"to": "Angora",
"createdOn": "2019-02-20 17:02:45",
"threadId": "667676767"
}]
}
},
computed: {
length() {
return Object.keys(this.items).length
},
pages() {
return Math.ceil(this.length / this.perpage)
}
}
})
// just to silent vue
Vue.config.productionTip = false;
Vue.config.devtools=false;
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.17/vue.js"></script>
<div id="app">
<label>per page:</label>
<input type="number" v-model="perpage" min="1" :max="length">
<ul v-for="n in pages">
<li v-for="(item, title, index) in items"
v-if="index >= perpage * (n-1) && index < perpage * n">
{{ title }}
</li>
</ul>
</div>
надеюсь помочь
Что вы ищете? Автоматический вывод типа или поиск типа, чтобы правильно объявить переменную вручную? (ваши собственные ответы выглядят так, как будто вы хотите получить второй). В этом случае рассмотрите возможность использования Geordi :
<litb> make type pointer to function taking pointer to array of 10 int returning void
<geordi> void (*)(int (*)[10])
<litb> geordi: { int a = -1; unsigned int b = 0; cout << ETYPE(a + b), ETYPE_DESC(a + b), (a + b); }
<geordi> rvalue unsigned int, rvalue unsigned integer, 4294967295
<litb> geordi: << TYPE_DESC(void (*)(int (*)[10]))
<geordi> pointer to a function taking a pointer to an array of 10 integers and returning nothing
Автоматический вывод типа в настоящее время невозможен без вспомогательных библиотек, таких как boost.typeof, которые будут использовать расширения компилятора, такие как __ typeof __
для GCC. Следующий C ++ получит auto
(с другой семантикой, чем текущий auto
) и сможет это сделать вместе с decltype
для получения типа выражения.
Если вы можете жить с выходом из локального контекста, вы всегда можете создать такой шаблон функции:
template<typename T> void f(T t) { /* ... */ }
int main() { int a = -1; unsigned int b = 0; f(a + b); }
Иногда я просто делаю:
int ***a = expression;
и вижу, что «<тип выражения> нельзя назначить для указателя на ^ 3 int». Это, кажется, самый переносимый способ.
В C ++ есть оператор typeid
,
typeid(expression).name()
будет возвращать определяемое реализацией имя типа выражения. Увы, он обычно не читается человеком.
Попробуйте Boost.Typeof , чтобы проверить, подходит ли он.
gcc имеет typeof () во время компиляции. Он работает как sizeof ().
http://gcc.gnu.org/onlinedocs/gcc/Typeof.html содержит больше информации.