时间:2016-03-22 05:25:37

标签: javascript vue.js vue-resource

我正在使用Vue资源,并尝试根据以前的AJAX调用产生的(假定绑定的)数据进行AJAX调用。

我正在尝试将来自/ me的调用数据绑定到userDetails prop(似乎工作正常),并将userDetails.id传递给下一个函数(this.fetchMyProjects()获得该用户的项目。 (不工作)。

当我将ID硬编码到this.fetchMyProjects()时,它会很好地绑定,但问题是对this.userDetails对象的引用 - 在此上下文中它是未定义的。

我无法理解为什么我无法访问我认为受约束的财产。任何人都能提供一些关于我做错的指导吗?

代码:

new Vue({
    el : 'body',
    data : {
        projects: [],
        userDetails: {},
    },
    created : function(){

        this.fetchMyUserDetails();
        this.fetchMyProjects();

    },

    methods : {

        fetchMyUserDetails : function(){

            this.$http.get('/me', function(resp){
                this.userDetails = resp.data;
            }).bind(this);

        },

        fetchMyProjects: function(){

            this.$http.get('/projects/user/' + this.userDetails.id, function(projects){
                this.projects = projects.data;
            }).bind(this);

        },


    }

});

2 个答案:

答案 0 :(得分:0)

你错位)。需要直接在函数上调用.bind(),在本例中为}

this.$http.get('/me', function(resp){
    this.userDetails = resp.data;
}.bind(this));

答案 1 :(得分:0)

这有效:

new Vue({
el : 'body',
data : {
    projects: [],
    userDetails: {},
},
created : function(){

    this.fetchMyUserDetails();
    // this.fetchMyProjects(); // Needed to chain it into fetchMyUserDetails()

},

methods : {

    fetchMyUserDetails : function(){

        this.$http.get('/me', function(resp){
            this.userDetails = resp.data;

            this.fetchMyProjects(); // Works!

        }).bind(this);

    },

    fetchMyProjects: function(){

        this.$http.get('/projects/user/' + this.userDetails.id, function(projects){
            this.projects = projects.data;
        }).bind(this);

    },


}

});