VueJS:未捕获(承诺)TypeError:无法读取属性' push'未定义的

时间:2016-07-19 13:03:28

标签: laravel-5 vue.js

我无法读取未定义的属性推送'错误:这是我的vueJs代码:

data:{
CoIsignedListUID:[]
}
methods:{

fetchCoISigned: function () {
            this.$http.get('/cimsm/public/api/fetchCoIsigned/' + this.conflictofInterest.complaintID).then(function (response) {
                var data = response.data;
                this.$set('CoIsignedList', data);
                data.forEach(function (detail) {
                    this.CoIsignedListUID.push(detail.uID);
                });
            });
我在做错了什么?感谢

2 个答案:

答案 0 :(得分:8)

this.CoIsignedListUID未定义

可能是因为this不是您认为的this

你应该做

var _this = this

在函数之外,然后

_this.CoIsignedListUID.push(detail.uID);

或者,您可以使用ES2015箭头语法。

而不是:

.then(function (response) {}

使用:

.then((response) => {}

现在可以在函数内部使用'this',因此无需创建新变量。完整详情Here

答案 1 :(得分:0)

forEach回调中的

this不是vue.js this。 你可以这样做来解决这个问题。

this.$http.get("...").then(function(response){
    var data = response.data;
    this.$set('CoIsignedList', data);
    var that = this;
    data.forEach(function (detail) {
        that.CoIsignedListUID.push(detail.uID);
    });
});