Vue.js交换数组项

时间:2017-01-25 16:50:18

标签: javascript vue.js

在我的vue.js应用程序中,我试图像这样交换2个论坛行:

export default {
        data() {
            return {
                forums: []
            }
        },

        methods: {
            increment(forum, index) {
                ForumService.increment(forum)
                    .then(() => {
                        let b = this.forums[index];
                        this.forums[index] = this.forums[index++];
                        this.forums[index++] = b;
                    });
            }
        }
    }

但没有任何反应?我在这里做错了什么?

1 个答案:

答案 0 :(得分:11)

虽然@dfsq对index++的使用是正确的,但Vue由于无法观察它们而无法识别数组的原生突变。你必须使用变异方法来改变它们。

试试这个:

.then(() => {
  let rows = [this.forums[index], this.forums[index + 1]];
  this.forums.splice(index, 2, rows[1], rows[0] );
});

我没有测试过,我会在可以的时候进行编辑。