让i总是等于undefined,但var i在for循环中被定义。

问题描述 投票:1回答:1

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

我无法使用 let 为我的循环定义索引,它总是未定义。该方法被一个来自draggable的事件所调用。然而,使用 var 而不是 let 可以工作。为什么 let 总是未定义?

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

这就是我看到的问题所在

enter image description here

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">
javascript vue.js vuedraggable
1个回答
0
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.