2016-10-04 82 views
0

我在打字稿打字稿類,而變量的訪問

class SlowQueriesController { 
    $http 
    constructor($http, $routeParams) { 
    this.$http = $http; 

    ..... some other code .... 

    this.$http.get('/api/metrics/findByType/' + $routeParams.application + '/METER').then(response => { 
     this.meters = response.data; 
     for (var i = 0; i < this.meters.length; i++) { 
     fillInMeterData(this.meters[i]); 
     } 
    }); 
    } 

    function fillInMeterData(meter) { 
    this.$http.get('/api/meterData/values/' + meter._id).then(response => { 
     ... some code ... 
    }); 
    } 
} 

該類我得到的問題是,在方法fillInMeterData我在哪裏訪問本該是在方法定義。$ HTTP,這是不確定的。

任何想法我做錯了什麼。請原諒我打字稿的知識淺薄,我仍在學習。

+0

你怎麼能在課堂上有一個功能?編譯器應該抱怨。 –

+0

它並沒有抱怨我,你會建議我的替代方案嗎? –

回答

0

我發現這個問題,但問題是,有哪些不正確聲明fillInMeterData之前的方法(它們被聲明如「功能方法名( )')

一旦我修復了類中的所有方法,以遵循語法,一切正常。

0

在打字稿類的方法不應該包含function關鍵字,並用它在this playground of a stripped version of your code編譯器應該抱怨你,如:

class SlowQueriesController { 
    constructor($http, $routeParams) { } 

    function fillInMeterData(meter) {} // ERROR: Unexpected token. A constructor, method, accessor, or property was expected. 
} 

您的代碼應該是這樣的:

class SlowQueriesController { 
    $http 
    constructor($http, $routeParams) { 
     this.$http = $http; 

     ..... some other code .... 

     this.$http.get('/api/metrics/findByType/' + $routeParams.application + '/METER').then(response => { 
      this.meters = response.data; 
      for (var i = 0; i < this.meters.length; i++) { 
       this.fillInMeterData(this.meters[i]); 
      } 
     }); 
    } 

    fillInMeterData(meter) { 
     this.$http.get('/api/meterData/values/' + meter._id).then(response => { 
      ... some code ... 
     }); 
    } 
} 

區別在於:

  1. function關鍵字的fillInMeterData方法
  2. 調用此方法時,使用this.fillInMeterData
+0

我試過,但我在編譯器中得到這個錯誤,然後「無法lint:app/slowQueries/slowQueries.controller.ts [102,25]:缺少分號。」.......行號102是我在哪裏有方法fillInMeterData –

+0

這不是一個編譯器錯誤,但一個lint錯誤。你使用哪種棉絨?你能用產生這個錯誤的確切代碼更新你的問題嗎? –

+0

我如何知道我正在使用哪種棉絨?基本上我使用yeoman generator-angular-fullstack生成基本結構並根據我的用法進行修改。粘貼整個代碼會非常複雜,如果需要,我可以通過電子郵件向您發送代碼。 –