2015-04-28 103 views
0

內引用我有一個像打字稿這不能模塊主體

module nganimaltracker { 
    export class TrayController implements ITrayController{ 
     public startTracker() { 
     var monitor = new animalPositionMonitor(this); 
     this.animalTrackerServices.TrackPosition(monitor, this.errorCallbackFn); 
    } 
    } 
} 
var animalPositionMonitor: any = (() => { 
    var jsClass: any = (trayController: ITrayController) => { 
     **var monitor = this;** 
     var me: IGenXStreamHandler<IAnimal> = new GenXStreamHandler('Animal'); 
     me.process = animal => { 
      var ll = **monitor["trayController"].gridOptions.data.length**; 
     } 
    } 
} 

模塊。如果我沒有模塊它的工作原理。但我需要保留模塊,我還需要監視器[「trayController」]訪問進程回調的元素,所以我不會失去範圍。我該怎麼做呢?

+0

我複製/粘貼你的代碼在其網站上的打字稿遊樂場和它編譯罰款。你會得到什麼錯誤,以及在哪些方面?什麼版本的TS? – CodingWithSpike

回答

0

根據new animalPositionMonitor(this);,您應該將animalPositionMonitor重構爲class,因爲您使用new來調用它。

進入你的代碼你正在添加東西到類型流處理程序的me。要將this傳遞給您將使用lambda,則無需在變量monitor中捕獲this

class animalPositionMonitor{ 
    constructor(trayContrller:ITrayController){ 
     var me: IGenXStreamHandler<IAnimal> = new GenXStreamHandler('Animal'); 
     me.process = animal => { 
      var ll = this["trayController"].gridOptions.data.length**; 
     } 
    } 
} 

這部短片會幫助你理解this更好:https://www.youtube.com/watch?v=tvocUcbCupA