0

私は Vue リソースを使用しており、以前の AJAX 呼び出しから得られた (バインドされていると思われる) データに基づいて AJAX 呼び出しを実行しようとしています。

/me への呼び出しからプロップへのデータをバインドし(正常に動作するようです)、次の関数 ( ) にuserDetails渡してそのユーザーのプロジェクトを取得しようとしています。(動作していません)。 userDetails.idthis.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);

        },


    }

});
4

2 に答える 2

0

あなたは間違った場所にい)ます。 .bind()関数で直接呼び出す必要があります。この場合は}:

this.$http.get('/me', function(resp){
    this.userDetails = resp.data;
}.bind(this));
于 2016-03-22T15:48:33.080 に答える
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);

    },


}

});
于 2016-03-22T21:22:38.683 に答える