2016-06-09 55 views
0

此代码是一个使用angularjs和typescript的ASP.net应用程序
在html文件中,有一个ng-repeat(用于填充表),它正在监视变量this.csvData (这是一个由private csvData = []定义的实例变量)并且表格完美地生成。但是,当我在updateDataDict函数内部尝试console.log时,控制台返回[]。我不知道为什么....实例变量在Typescript中不保留值

public csvData = []; 
private csvDataDict = {}; 

private getCSVdata() { 
      var locationType = document.getElementById('dropdownButton').innerText.toLowerCase(); 
      console.log("Inside CSV data"); 

      let dataArray = []; 

      this.$http.get(this.csvLocations[locationType]).then(function (res) { 
       var result = res.data.toString().split(/\r\n|\n/); 
       for (let i = 0; i < result.length; i++) { 
        let [sourceURL, redirectURL] = result[i].split(','); 
        dataArray.push({ 
         sourceURL: sourceURL, 
         redirectURL: redirectURL 
        }) 
       } 

      }); 

      this.csvData = dataArray; 
      this.updateDataDict() 
     } 
private updateDataDict() { 
      console.log(this.csvData); // this line is screwing up..... 

     } 
+0

this.updateDataDict()将在内部代码之前执行。 –

回答

3

var result = res.data.toString().split(/\r\n|\n/); 
for (let i = 0; i < result.length; i++) { 
    let [sourceURL, redirectURL] = result[i].split(','); 
    dataArray.push({ 
    sourceURL: sourceURL, 
    redirectURL: redirectURL 
    }) 
} 

被这个

this.csvData = dataArray; 
this.updateDataDict() 

,因为它的异步调用后执行,因此要检查前阵其实际上正在填充。

+0

由于“this”引用,我无法从回调中调用this.updateDataDict()。有什么建议么? – gwhiz

+0

使用胖箭头代替功能。 –