目前,我确实v-if="Object.keys(video).length > 0"
div
,以确保video
仅在实际可用时才发送到video-player
组件。
如果我省略v-if
检查,初始化为null
的video
将发送到video-player
组件,并且视频不会加载,即使一秒钟后,video
数据也会填充来自 Ajax 调用的 URL。有没有更好的方法来解决这个问题,而无需到处v-if
指令?
您可以使用异步组件,它允许您处理异步代码并仅在准备就绪时解析组件,还提供了用于加载和处理错误的高级功能,下面是一个简单的示例:
Vue.component('async-component',
function (resolve, reject) {
fetch('https://randomuser.me/api/?results=10')
.then((resp) => resp.json())
.then(function(data) {
this.authors = data.results || [];
resolve({
template:
`
<div>
<img
v-for="author in authors"
:src='author.picture.medium'
/>
</div>
`,
data() {
authors: []
}
});
});
});
var vm = new Vue({
el: '#app',
template:
`
<async-component />
`
});
您还可以检查工作示例。