在 v-for 循环中调用方法

Calling a method within a v-for loop

我有一个问题,我理解这个问题,但我不知道如何解决它。我在我的 v-for 循环中遇到了无限循环错误,因为我更改了再次调用循环的值,循环又更改了值等等。

我如何重写这段代码,使其能够执行我需要的操作而不产生错误。

<div v-for="clients in filterClients">
    <div>
        {{ countClientContacts(clients['.key']) }}
    </div>
</div>



countClientContacts: function(cKey) {
    var x = 0
    clientContactsRef.orderByChild('client_id').equalTo(cKey).on('child_added', function(clientDetails) {
        x++
    })
    return x
}

这确实有效,并显示了每列的正确计数,但由于错误,它显然冻结了我程序的其他部分。我已经尝试过计算,但相信我需要一种方法。

我是 Vue 新手,所以不知道如何解决这个问题。

谢谢

看起来您正在使用 firebase 检索数据,child_added 中的所有回调都是 ansyc,您不能 return 使用简单的 return 语句。

您的选项是 运行 创建的事件函数中的 this,一旦回调 return 您可以更新数据变量,然后显示它。

OBS:检查 firebase 中是否有任何其他选项 return 仅在一个响应中来自客户的合同数量。我不知道它是如何工作的,但看起来有可能两个并行回调函数同时更新 contractsNr

data: {
  clients: [
    { '.key': 1, contractsNr: 0},
    { '.key': 2, contractsNr: 0}
  ]
}

created: function () {
  this.clients.foreach((client, clientIndex) => {
    clientContactsRef.orderByChild('client_id').equalTo(client['.key']).on('child_added', (clientDetails) => {
      this.clients[clientIndex].contractsNr = this.clients[clientIndex].contractsNr + 1
    })
  })
}
<div v-for="client in filterClients">
    <div>
        {{ client.contractsNr }}
    </div>
</div>