Javascript Promise.all()中的返回值
我在Laravel 5.7中使用Vue 2,在Vue组件中,我在Javascript Promise.all()中的返回值,javascript,vuejs2,php-7.2,laravel-5.7,Javascript,Vuejs2,Php 7.2,Laravel 5.7,我在Laravel 5.7中使用Vue 2,在Vue组件中,我在v-for循环中有以下内容: <p v-html="getFacebookObjectInteractions(activities.id)"></p> 我需要最后一个return来将.join()的结果发送到v-html,但我得到的只是{} 但是console.log(messageString)吐出正确的字符串值: 参与度:2条评论,3条喜欢,1份分享 如果我这样做: var something = P
v-for
循环中有以下内容:
<p v-html="getFacebookObjectInteractions(activities.id)"></p>
我需要最后一个return
来将.join()
的结果发送到v-html
,但我得到的只是{}
但是console.log(messageString)代码>吐出正确的字符串值:
参与度:2条评论,3条喜欢,1份分享
如果我这样做:
var something = Promise.all(...
。。。我必须在上面做一个.then()
,以获得承诺中的价值,我的处境与我开始时一样
任何想法?getFacebookObjectInteractions
返回一个承诺对象,而不是您期望的对象。这就是html没有出现的原因。您应该改为将v-html
设置为数据或计算属性。安装组件后,您可以调用getFacebookObjectInteractions
,最终更新该属性,然后Vue将使用正确的html重新呈现组件
根据您的代码,有点不清楚活动从何而来,因此您可能需要进一步重构代码,但这应该会给您提供基本的想法
因此,在HTML中:
然后在Vue组件中
{
data(){
return { html : "" }
}
methods : {
getFacebookObjectInteractions(object_id){
// ...
Promise.all(...).then( (messages) => {
// ...
// Update your reactive property
this.html = messageString
})
}
}
// Called when the component is mounted
mounted(){
this.getFacebookObjectInteractions(activities.id)
}
}
请参阅此处以获取更深入的示例:对框架没有任何线索,但如果v-html不支持承诺,则您将不得不以不同的方式考虑它。getFacebookObjectComments
(等)不应接受回调,而应返回承诺本身。@epascarello,是否可以在getFacebookObjectInteractions()中获取承诺之外的值
并从那里返回它?为什么不使用wait?@SergioEscudero我尝试了多种不同的组合,但它们要么不起作用,要么给我一个编译错误。那篇文章没有包含任何与计算属性有关的内容,或者处理多个方法。不,主要思想是如何使用异步方法,在本例中是Promise.all
来更新应用程序的状态。异步方法的作用并不重要,重要的是更新vue组件中的被动属性。这是我必须开始编写的代码,但我需要将三个不同方法的结果组合成一个字符串,从而使用承诺。这不是您所拥有的。请注意,p元素的html是如何绑定到vue组件上的被动属性的,而不是getFacebookObjectInteractions
的结果。通过这种方式,当您从代码中的任何位置更新该属性时,vue会像魔术一样将html放入您的组件中。当我第一次开始编码时,我拥有您所拥有的,但正如我所说的,当组合多个方法的值时,它将不起作用。我不会对
标记进行更新,因为v-html
的缘故,这也不会起作用。如果我从getFacebookObjectInteractions()
返回一个值,它就可以正常工作。
{
data(){
return { html : "" }
}
methods : {
getFacebookObjectInteractions(object_id){
// ...
Promise.all(...).then( (messages) => {
// ...
// Update your reactive property
this.html = messageString
})
}
}
// Called when the component is mounted
mounted(){
this.getFacebookObjectInteractions(activities.id)
}
}