2

変数が定義されていない理由がよくわかりませんこれは私のコードです:

Calendar = function() {

    this.data;  
    this.init = function(path, callback){
        $.ajax({
            url:path,
            type:'GET',
            success:function(data){
                this.data = data;
                console.log(this.data);
                callback();
            }
        })
    }

    this.create = function(){
        this.generateYear();
    }   

    this.generateYear = function(){
        console.log(this.data); 
    }   
}

そして、私はそれを次のように使用します:

$(document).ready(function(){
    var calendar = new Calendar();
    calendar.init(path,function(){
        calendar.create();
    });
});

したがって、最初の console.log は良好ですが、2 番目は未定義です。後で呼び出されるため、理由がわかりません。

ご協力いただきありがとうございます

4

3 に答える 3

5

ajax 関数にコンテキスト パラメータを設定します。これを試してください:

 $.ajax({
        url:path,
        type:'GET',
        context: this,
        success:function(data){
            this.data = data;
            console.log(this.data);
            callback();
        }
    })
于 2013-07-26T08:26:09.000 に答える
3

this、ajaxに与えるコールバックでは、カレンダーではありません。

init 関数を次のように変更します

this.init = function(path, callback){
    var calendar = this;
    $.ajax({
        url:path,
        type:'GET',
        success:function(data){
            calendar.data = data;
            console.log(calendar.data);
            callback();
        }
    })
}
于 2013-07-26T08:25:34.457 に答える