0

我在我的项目中使用 vue、vuedraggable 和 vuetify。

我无法使用 let 为我的循环定义我的索引,它总是未定义。此方法被可拖动的事件调用。但是,使用 var 而不是 let 可以。为什么 let 总是未定义?

即使我直接将变量 i 分配给 1 它仍然是未定义的。例如 for(let i = 1; i < 2; i++) 仍然导致 i 在 for 循环中等于 undefined。

这是我看到问题的地方

在此处输入图像描述

updateOrderNumbers(draggedContext) {
    if (draggedContext.index < draggedContext.futureIndex) {  
      for (let i = draggedContext.index; i < draggedContext.futureIndex; i++) {
        let swapIndex = this.orderTableData[i].sortOrder;
        this.orderTableData[i].sortOrder = this.orderTableData[i+1].sortOrder ;
        this.orderTableData[i+1].sortOrder = swapIndex;
      }
    }

    if (draggedContext.index > draggedContext.futureIndex) {
      for (let i = draggedContext.index; i > draggedContext.futureIndex; i--) {
        let swapIndex = this.orderTableData[i].sortOrder;
        this.orderTableData[i].sortOrder = this.orderTableData[i+1].sortOrder;
        this.orderTableData[i+1].sortOrder = swapIndex;
      }
    }
 }

从这里调用此方法

 onMoveCallback(evt){
    this.updateOrderNumbers(evt.draggedContext)
    this.checkForChanges()
  }

这是触发呼叫的元素。

<draggable v-model="orderTableData" :move="onMoveCallback" tag="tbody">
4

1 回答 1

0

在这种情况下,FireFox 和 Chrome 似乎无法确定在 for 循环中使用 let 初始化的变量的值,但如果您在 for 循环中使用 var 初始化变量,它们能够确定其值。

于 2020-04-28T18:08:29.677 回答