vue js返回值给出未定义的错误

时间:2016-05-17 04:39:57

标签: vue.js

我想检查$ http.get()的返回值,但是我得到了未定义的值。这是我的vue js代码:

var vm = new Vue({
    el: '#permissionMgt',
    data: {
        permissionID: []

    },

methods:{
fetchPermissionDetail: function (id) {
            this.$http.get('../api/getComplaintPermission/' + id, function (data) {

                    this.permissionID = data.permissionID; //permissionID is a data field of the database
                    alert(this.permissionID); //*****this alert is giving me undefined value

            });
        },

}
    });

你能告诉我这里的问题吗?.. btw $ http.get()正确获取所有数据。

2 个答案:

答案 0 :(得分:0)

这是一个常见的js错误。进行以下更改,它将起作用。

fetchPermissionDetail: function (id) {

        var self = this; //add this line
        this.$http.get('../api/getComplaintPermission/' + id, function (data) {

                self.permissionID = data.permissionID; //replace "this" with "self"


            });
        },

}

原因是this指向匿名函数window内的function()

这是众所周知的js问题。如果您使用的是es2015,则可以使用箭头语法(() => { /*code*/ })语法正确设置this

答案 1 :(得分:0)

您需要检查从服务器返回的data的类型。如果@ Raj的解决方案没有解决您的问题,那么返回的permissionID中可能不会出现data

执行colsole.log(data)并检查dataobject还是array {/ 1}}。

干杯!