2015-08-25 75 views
0

我有一個JavaScript類,希望將$ .getJSON的結果傳遞給同一個類的另一個方法,並從類外部訪問它。我的錯誤在哪裏?

我的代碼是這樣的相似:

function MyClass() { 
    var mydata = false; 

    this.getData = function() { 
     $.getJSON("/api/get.php", function(data) { 
      this.setData(data); 
     }); 
    } 

    this.setData = function(data) { 
     this.mydata = data; 
     this.logData(); 
    } 

    this.logData = function() { 
     console.log(this.mydata); 
    } 

    this.returnData = function() { 
     return this.mydata; 
    } 
} 

var MyClass = new MyClass(); 
MyClass.getData(); 
var data = MyClass.returnData(); 

首先,我要創建我的類的實例,並從服務器獲取數據。然後,setData方法應驗證結果,將其存儲在變量中並將結果記錄到控制檯。在此之後,我想從課堂外訪問數據。每個函數內

回答

1

this變化,所以你可以存儲this一個變量中:

function MyClass() { 
    var mydata = false, that = this; 

    this.getData = function() { 
     $.getJSON("/api/get.php", function(data) { 
      that.setData(data); 
     }); 
    } 

    this.setData = function(data) { 
     that.mydata = data; 
     that.logData(); 
    } 

    this.logData = function() { 
     console.log(that.mydata); 
    } 

    this.returnData = function() { 
     return that.mydata; 
    } 
} 

var MyClass = new MyClass(); 
MyClass.getData(); 
var data = MyClass.returnData(); 
+0

THX!我只是忘了這個! – DerProgrammierer78

0

試試這個:

function MyClass(){ 

var setValue="",logValue=""; 

var getJSON = function(setDatafunc){ 
    $.getJSON("http://demo3913311.mockable.io/mytestdata", function(data) { 
     setDatafunc(data); 
    }); 
} 

var getData = function(){ 
    return getJSON(setData); 
} 

var setData = function(data) { 
     setValue = (data)? data: (setValue)? setValue : 'undefined' 
     logData(setValue); 
} 

var logData= function(data){ 
    logValue = (data)? data: (logValue)? logValue : 'undefined' 
    console.log('12',logValue) 
    return logValue; 
} 

var returnData = function(){ 
    return logValue; 
} 



return { 

    get: getData, 
    set: setData, 
    //log: logData 
    doReturn : returnData 
} 

} 

var MyClass = new MyClass(); 
MyClass.get() 
MyClass.doReturn(); 
+0

有趣!謝謝! – DerProgrammierer78

相關問題