Max*_*Max 5 vue.js vue-component vuejs2
我有这个组件
<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>
Run Code Online (Sandbox Code Playgroud)
该组件用于另一个组件,它使用$ .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>
Run Code Online (Sandbox Code Playgroud)
这是UsersService
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);
}
});
});
}
}
Run Code Online (Sandbox Code Playgroud)
Promise如果我改变了,你可以看到服务获取数据
<div v-for="user in data">
Run Code Online (Sandbox Code Playgroud)
进入物业,我可以看到用户
<div v-for="user in users">
Run Code Online (Sandbox Code Playgroud)
问题:如何将异步道具值传递给组件?
您可以在users-list中“onInit”一次设置数据。对于反应性,你可以这样做
computed:{
data(){ return this.users;}
}
Run Code Online (Sandbox Code Playgroud)
或者
watch: {
users(){
//do something
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3339 次 |
| 最近记录: |