Vue版本:2.6.10
Vuetify版本:1.5
我正在使用Vuetify 1.5.16文档的示例数据:https://v15.vuetifyjs.com/en/components/data-tables
该表显示正确,我可以使用道具编辑它的外观。问题在于数据未完全加载。表中的行数与数组中的对象数完全相同,但所有行均为空白(td标签为空白)。
启用道具“加载”后,它一直都是正确的(我一直都能看到进度线过渡效果)。
{% extends 'base.html' %}
{% block title %}Page name{% endblock %}
{% block custom_style %}
<link href="https://fonts.googleapis.com/css?family=Roboto:100,300,400,500,700,900|Material+Icons" rel="stylesheet">
<link href="https://cdn.jsdelivr.net/npm/vuetify@1.5/dist/vuetify.min.css" rel="stylesheet">
<!-- <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no, minimal-ui"> -->
{% endblock %}
{% block content %}
<v-app id="app-name">
<template>
<v-data-table dark loading no-data-text :headers="headers" :items="desserts"
class="elevation-1">
<template v-slot:items="props">
<td> {{ props.item.name }}</td>
<td class="text-xs-right">{{ props.item.calories }}</td>
<td class="text-xs-right">{{ props.item.fat }}</td>
<td class="text-xs-right">{{ props.item.carbs }}</td>
<td class="text-xs-right">{{ props.item.protein }}</td>
<td class="text-xs-right">{{ props.item.iron }}</td>
</template>
</v-data-table>
</template>
</div>
</v-app>
{% endblock %}
{% block custom_js_back %}
<!-- development version, includes helpful console warnings -->
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
<script src="https://unpkg.com/axios/dist/axios.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/vuetify@1.5/dist/vuetify.js"></script>
<script>
var vueData = new Vue({
delimiters: ["<%", "%>"],
el: '#app-name',
data: {
// example data
headers: [
{
text: 'Dessert (100g serving)',
align: 'left',
sortable: false,
value: 'name',
},
{ text: 'Calories', value: 'calories' },
{ text: 'Fat (g)', value: 'fat' },
{ text: 'Carbs (g)', value: 'carbs' },
{ text: 'Protein (g)', value: 'protein' },
{ text: 'Iron (%)', value: 'iron' },
],
desserts: [
{
name: 'Frozen Yogurt',
calories: 159,
fat: 6.0,
carbs: 24,
protein: 4.0,
iron: '1%',
},
{
name: 'Ice cream sandwich',
calories: 237,
fat: 9.0,
carbs: 37,
protein: 4.3,
iron: '1%',
},
{
name: 'Eclair',
calories: 262,
fat: 16.0,
carbs: 23,
protein: 6.0,
iron: '7%',
},
],
},
});
</script>
{% endblock custom_js_back %}
Django可能与此无关。
答案 0 :(得分:0)
您正在定义自定义delimiters
,因此请使用它们代替默认的["{{", "}}"]
。
关于loading
道具一直都是正确的,这是因为当您执行以下操作时:
<v-data-table loading>
</v-data-table>
没有v-bind
,实际上是将标志永久设置为true
(无数据绑定)。相反,您最可能希望做的是v-bind:loading="loading"
(或更短的:loading="loading"
),其中类似名称的值(loading
)是将状态绑定到您的{{ 1}}对象。
从此处,您可以在获取数据(通过axios或其他方式)时说“开始加载”,等等,将状态切换为data
。
道具true
也是如此-如果您不需要数据绑定,则可以像使用任何HTML属性一样简单地将自定义文本置于行内。例如
no-data-text
<v-data-table no-data-text="No data to display">
var vueData = new Vue({
delimiters: ["<%", "%>"],
el: '#app-name',
data:() => ({
// example data
headers: [
{
text: 'Dessert (100g serving)',
align: 'left',
sortable: false,
value: 'name'
},
{ text: 'Calories', value: 'calories' },
{ text: 'Fat (g)', value: 'fat' },
{ text: 'Carbs (g)', value: 'carbs' },
{ text: 'Protein (g)', value: 'protein' },
{ text: 'Iron (%)', value: 'iron' }
],
desserts: [
{
name: 'Frozen Yogurt',
calories: 159,
fat: 6.0,
carbs: 24,
protein: 4.0,
iron: '1%',
},
{
name: 'Ice cream sandwich',
calories: 237,
fat: 9.0,
carbs: 37,
protein: 4.3,
iron: '1%',
},
{
name: 'Eclair',
calories: 262,
fat: 16.0,
carbs: 23,
protein: 6.0,
iron: '7%',
}
],
loading: false
})
});