vue.js - VueJS 从 AJAX 调用加载数据并将其传递给没有 v-if 的子组件
问题描述
我正在使用 ajax 在根 Vue 实例中加载数据并尝试将其传递给子组件。而且我得到了未定义的数据。当然,这是因为 ajax 调用的异步性质而发生的,所以我的问题是如何在不使用 v-if 渲染阻塞子组件的情况下做到这一点。最好的做法是什么。
这是我的演示应用程序 - https://codepen.io/xblack/pen/jXQeWv?editors=1010
Vue.component('child-one',{
template:'#child-one',
props:['mydataOne']
});
Vue.component('child-two',{
template:'#child-two',
props:['mydataTwo']
});
let app = new Vue({
el:'#app',
data:{
welcome:'Hello World',
mydata:null
},
methods:{
getdataApi:function(){
var self = this;
$.getJSON( "https://jsonplaceholder.typicode.com/users", function( data ) {
self.mydata = data;
});
}
},
created:function(){
this.getdataApi();
},
mounted:function(){
this.getdataApi();
console.log('api data->',this.mydata);
}
});
解决方案
这是主要原因: https ://stackoverflow.com/a/54163297/523630
您的mydataOne
andmydataTwo
属性应该在组件mydata-one
的mydata-two
html 片段中,如下所示:
<div :mydata-one="mydata"></div>
这是您的代码的工作片段:
https://codepen.io/anon/pen/Jwewde?editors=1010
Vue.component('child-one',{
template:'#child-one',
props:['one']
});
Vue.component('child-two',{
template:'#child-two',
props:['two']
});
let app = new Vue({
el:'#app',
data:{
welcome:'Hello World',
mydata:null
},
methods:{
getdataApi(){
$.getJSON( "https://jsonplaceholder.typicode.com/users", (data) => {
this.mydata = data;
});
}
},
mounted:function(){
this.getdataApi();
}
});
推荐阅读
- html - 在通过发布请求重新加载应用程序之前显示警报(反应)
- android - 带 FCM 的 Ionic 5
- node.js - Nestjs:如何使用nest/cli 从nestjs monorepo 中删除特定应用程序
- css - 如何在 React.sj 中将 SVG 动态定位到另一个 SVG 之上?
- javascript - 在 Firestore 中如何在 foreach 枚举中检索文档 ID
- c# - 如何获取我的热点的 ssid 和密码以与接收者共享?
- python - MQTT IoT 智能插件 Python
- delphi - Delphi - 如何过滤包含子字符串的字符串的 ADOTable
- sql - 将行从数据库表复制到另一个具有相同结构和位置的数据库表
- julia - 对象未在循环中定义