【发布时间】:2019-05-15 07:18:48
【问题描述】:
我正在使用 axios 从 https://jsonplaceholder.typicode.com 获取 API 数据。我一直在尝试根据每个帖子的 userId 获取用户的名称,以便可以在 html 中显示它。
例如:
帖子
post.id = 1
post.userId = 1
用户
- user.id = 1
- user.name = Leanne Graham
到目前为止,这是我的 HTML。我已经为 post.userId 尝试了 v-model,但现在我不知道如何将它传递给数据。
<div id="app">
<input class="search" placeholder="Search post" v-model="search">
<div class="post-card" v-for="post in filteredPosts" v-model="post.userId">
<h1>{{post.title}}</h1>
<p>{{post.userId}}</p>
</div>
</div>
<script src='https://cdnjs.cloudflare.com/ajax/libs/vue/2.6.10/vue.min.js'></script>
<script src='https://cdnjs.cloudflare.com/ajax/libs/axios/0.18.0/axios.min.js'></script>
这是我的 .js 文件。如您所见,我注释掉了我获取用户详细信息的尝试。我试过做“res.data.name”,但在控制台中尝试后,我得到“未定义”。
var vm = new Vue({
el: '#app',
data() {
return {
posts: [],
users: [],
search: '',
}
},
created(){
const baseURL = 'https://jsonplaceholder.typicode.com';
axios.get(baseURL + '/posts?_limit=20')
.then(res => this.posts = res.data)
.catch(err => console.log(err));
// axios.get(baseURL + '/users' )
// .then(res => this.users = res.data.name)
// .catch(err => console.log(err));
},
computed: {
filteredPosts() {
return this.posts.filter(post => {
return post.title.toLowerCase().includes(this.search.toLowerCase())
})
}
}
})
非常感谢!
【问题讨论】:
-
你不需要 v-model,也没有过滤后的数组。
-
我已经有一种过滤方法,我意识到在我的问题中不包含该代码是我的错误。我会编辑它,让它更清晰。
标签: javascript vue.js