【发布时间】:2017-10-24 13:07:00
【问题描述】:
我有这个组件
<template>
<div class="list-group">
<div v-for="user in data">
<!-- omitted for brevity -->
</div>
</div>
</template>
<script>
export default ("users-list", {
props: ['users']
,
data() {
return {
data: this.users
}
}
});
</script>
这个组件是从另一个组件中使用的,它使用 $.ajax (Promise) 获取数据并设置数据
<template>
<div>
<users-list v-bind:users="users"></users-list>
<div>
</template>
<script>
import UsersService from './users.service.js';
import UsersList from './users.list.vue';
export default ('users-main', {
components: {
'users-list': UsersList
},
mounted() {
this.refresh();
},
data() {
return {
data: null,
message: null,
user: null
}
},
methods: {
refresh() {
let service = new UsersService();
service.getAll()
.then((data) => {
this.data = data;
})
.catch((error) => {
this.message = error;
})
},
selected(user) {
this.user = user;
}
}
});
</script>
这就是用户服务
import $ from 'jquery';
export default class UsersService {
getAll() {
var url = "/Api/Users/2017";
return new Promise((resolve, reject) => {
$.ajax({
url: url,
success(data) {
resolve(data);
},
error(jq, status, error){
reject(error);
}
});
});
}
}
如您所见,如果我更改,服务会使用Promise 获取数据
<div v-for="user in data">
进入属性,我可以看到用户
<div v-for="user in users">
问题:如何将 async props 值传递给组件?
【问题讨论】:
-
有时,让事情变得简单并避免很多麻烦将异步请求放入组件是最好和最简单的方法。不过,不知道这是否适合你。
标签: vue.js vuejs2 vue-component