【问题标题】:Vue JS Function not returning an arrayVue JS函数不返回数组
【发布时间】:2019-05-30 19:59:10
【问题描述】:

我在我的数据模型中初始化了一个属性:

someArray: []

我在这里有一个函数的数组:

getMyArray: function (someId) {
                var result = [7, 8, 9, 10];
                return result;
}

我在这里调用函数:

this.someArray = this.getMyArray(value);

我的财产someArray 没有得到预期的结果。它返回一个空项目。

我在某处听说我可能不得不手动推送每个项目。这是真的?我究竟做错了什么?

编辑:完整示例...

var app = new Vue({
    el: '[some-app]',
    data: {
        someArray: []
    },
    methods: {
        getMyArray: function (someId) {
                var result = [7, 8, 9, 10];
                return result;
            });
        },
    },
    watch: {
        someChangingId: function (value) {
            this.someArray = this.getMyArray(value);
        }
    },
});

【问题讨论】:

  • 请创建一个minimal reproducible example
  • 您在代码中的什么位置分配 this.someArray = this.myArray(someValue); ?
  • 你能展示整个组件吗?您是否尝试使用计算属性?

标签: javascript vue.js


【解决方案1】:

在javascript中,对象和数组都是引用,不同于其他变量类型。

你可以去:

myArray: function (value) {
  var result = new Array(4);
  result[0] = 7;
  result[1] = 8;
  result[2] = 9;
  result[3] = 10;
  return result;
}

然后使用.slice() 方法正确复制数组:

this.someArray = this.myArray('someValue').slice();

顺便说一句,我不明白您为什么要传递 value 参数,因为它没有在您的函数中使用。

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2020-04-03
  • 2022-01-25
  • 1970-01-01
  • 2019-03-23
  • 1970-01-01
  • 2021-10-20
  • 2021-03-14
  • 1970-01-01
相关资源
最近更新 更多