vue做一个上移、下移的功能,但是效果出不来?

界面如下:

clipboard.png

要求:点击“上移”“下移”,两个题目会对换。

我给“上移”加了个点击事件:

up:function(n){//n为下标
    let t = this.formData[n-1];
    this.formData[n-1] = this.formData[n];
    this.formData[n] = t;
    console.log(this.formData);
},

clipboard.png

最后我将数据打印出来,位置确实换了,但是界面没有变 这是为什么啊?

阅读 3.2k
2 个回答

vue的双向绑定数据机制导致无法直接用下标操作数组
详情参考→https://cn.vuejs.org/v2/guide...

为了解决第一类问题,以下两种方式都可以实现和 vm.items[indexOfItem] = newValue 相同的效果,同时也将触发状态更新:

// Vue.set
Vue.set(vm.items, indexOfItem, newValue)
// Array.prototype.splice
vm.items.splice(indexOfItem, 1, newValue)

你也可以使用 vm.$set 实例方法,该方法是全局方法 Vue.set 的一个别名:

vm.$set(vm.items, indexOfItem, newValue)

= 赋值 和修改length 是不支持的
set 就好

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题