gpt4 book ai didi

vue.js - Vue - 使用 Axios 填充表

转载 作者:行者123 更新时间:2023-12-03 08:54:33 27 4
gpt4 key购买 nike

我正在尝试使用 axios 和 vue 填充表,如下所示:

    <div class="container  h-100">
<div class="row h-100 justify-content-center align-items-center">
<table class="table table-striped table-bordered table-hover">
<thead class="thead-dark">
<tr>
<th>#</th>
<th>First</th>
<th>Last</th>
<th>Handle</th>
</tr>
</thead>
<tbody>
<tr v-for="user in users">
<td>{{user.name}}</td>
<td>{{user.username}}</td>
<td>{{user.email}}</td>
<td>{{user.phone}}</td>
</tr>
</tbody>
</table>
</div>
</div>
</body>
<script src="https://cdn.jsdelivr.net/npm/<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="3244475772001c041c0302" rel="noreferrer noopener nofollow">[email protected]</a>/dist/vue.js"></script>
<script src="https://unpkg.com/axios/dist/axios.min.js"></script>
<script>
var users;
axios.get('https://jsonplaceholder.typicode.com/users')
.then(function (response) {
users = response['data'];
})
.catch(function (error) {
console.log(error);
})
</script>

问题是 {{user.name}} 返回 '{{user.name}}' ,不显示真实数据。有人知道如何使用 vue 在表格中显示数组数据吗?

更新

我使用此代码进行了更新,但 View 仍然为空。如果我在脚本中返回 this.users,则返回一个带有值的对象。

<!DOCTYPE html>
<html lang="en">

<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css">
<title>Tabla</title>
<style>
body,
html {
height: 100%;
}
</style>
</head>

<body>
<div id="tabla">
<div class="container h-100">
<div class="row h-100 justify-content-center align-items-center">
<table class="table table-striped table-bordered table-hover text-center">
<thead class="thead-dark">
<tr>
<th>Name</th>
<th>Username</th>
<th>Email</th>
<th>Phone</th>
</tr>
</thead>
<tbody>
<tr v-for="user in users">
<td>{{user.name}}</td>
<td>{{user.username}}</td>
<td>{{user.email}}</td>
<td>{{user.phone}}</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
</body>
<script src="https://cdn.jsdelivr.net/npm/<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="0274776742302c342c3332" rel="noreferrer noopener nofollow">[email protected]</a>/dist/vue.js"></script>
<script src="https://unpkg.com/axios/dist/axios.min.js"></script>
<script>
new Vue({
el: '#tabla',
data: {
users: [],
},
created: function () {
this.load();
},
methods: {
load: function () {
axios
.get('https://jsonplaceholder.typicode.com/users')
.then(function (response) {
this.users = response.data;
})
.catch(function (error) {
console.log(error);
})
}
}
})
</script>

</html>

最佳答案

更新

问题出在 axios api 回调中的 this

这不是解释这个的正确地方。

在简单的上下文中 - thisfunction 所属的对象。在您的情况下, this 获取 window 对象,因为您使用的 function 不是 lexically 范围的。要使其具有词法作用域,请使用ES6 Arrow fn

new Vue({
el: "#app",
data() {
return {
users: []
}
},
mounted: function() {
axios
.get('https://jsonplaceholder.typicode.com/users')
.then(response => {
this.users = response.data
})
.catch(function (error) {
console.log(error);
})
}
})
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.16/vue.js"></script>
<script src="https://unpkg.com/axios/dist/axios.min.js"></script>

<div id="app">

<table>
<thead class="thead-dark">
<tr>
<th>#</th>
<th>First</th>
<th>Last</th>
<th>Handle</th>
</tr>
</thead>
<tbody>
<tr v-for="user in users" :key="user.email">
<td>{{user.name}}</td>
<td>{{user.username}}</td>
<td>{{user.email}}</td>
<td>{{user.phone}}</td>
</tr>
</tbody>
</table>
</div>

您需要创建将您的 html 绑定(bind)到它的 vue 实例

假设您有 html,其中有一个 id = app

<div id="app">
{{ message }}
</div>

现在如果你想让这段html使用vue,你需要绑定(bind)它。

var app = new Vue({
el: '#app', // This property el binds the container #app
data: {
message: 'Hello Vue!' // here you create your data values you want to use
}
})

但是我建议您在使用之前先阅读 vue 很棒的文档 - Vue JS

关于vue.js - Vue - 使用 Axios 填充表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56628157/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com