javascript - 如果数据元素的索引发生变化,则重新渲染 DOM

标签 javascript vue.js vuejs2

Vue.js 没有检测到我在我的数据对象中交换了 2 个数组元素:

data: {
  list: [
    'Foo',
    'Bar',
    'Test'
  ]
}

交换条目的方法:

swapIndex: function(from, to) {

  var first = this.list[from];
  this.list[from] = this.list[to];
  this.list[to] = first;

}

JsFiddle https://jsfiddle.net/aaroniker/r11hxce8/

如果我交换索引,我想重新渲染 v-for 循环。

谢谢!

最佳答案

这是我提供的解决方案。我创建了您的列表的副本以对其进行修改,并在列表中调用了 this.$set() 方法:

new Vue({
    el: '#app',
    data: {
        list: [
            'Foo',
            'Bar',
            'Test'
        ]
    },
    methods: {
        swapIndex: function(from, to) {
            var copy = JSON.parse(JSON.stringify(this.list))
            var first = copy[from];
            copy[from] = copy[to];
            copy[to] = first;
            this.$set(this,'list',copy)
            console.log(this.list);

        }
    }
})

关于javascript - 如果数据元素的索引发生变化,则重新渲染 DOM,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40807263/

相关文章:

javascript - 缩略图滚动中图像之间/之后的大间隙

javascript - 为什么我的 Javascript 音频在刷新页面后不起作用?

javascript - Vue.js - 更新的数组项值不会在页面中更新

javascript - 使用 v-onclick Vue 2.0 隐藏父级。最大宽度 : 767px

javascript - 使用 @click 方法和 select 标签来更改计算属性的值

data-binding - Vuejs 2,VUEX,编辑数据时的数据绑定(bind)

javascript - 未定义类时如何从 ajax 响应中获取 anchor 标记值

Javascript Regex匹配多种货币符号和金额

Vue.js/Mixins - 有没有办法在 vue 组件之外获取全局 mixin 对象?

javascript - Vuetify - 如何访问表单规则中的数据