Typescript -词法作用域的问题=>这一点

Typescript - Problems with the lexical scoping => this

本文关键字:这一点 问题 词法 作用域 Typescript      更新时间:2023-09-26

我的问题是以下功能:

() => this.handleRes(res, this.lobbyInitFn(this.$log, this.lobbyData))

在Ctrl键上获得对我的lobbyData变量的引用的最佳方法是什么?由于胖箭头语法,我得到一个指向全局window对象的指针。

目前我只得到lobbyInitFn方法中$log函数的引用和dataCol参数的未定义。

module lobby.controllers {
  'use strict';
  class LobbyCtrl{
    public lobbyData : Array<string>;
    constructor(private $scope, private $log : ng.ILogService, private lobbyStorage) {
      this.init();
    }
     private init(){
      this.initializeLobbyData();
    }
    private initializeLobbyData(){
      var res = this.lobbyStorage.LobbyRoom().query(
        () => this.handleRes(res, this.lobbyInitFn(this.$log, this.lobbyData)),
        () => this.handleErr("Error while initializing the lobby data."));
    }
     private lobbyInitFn(logger, dataCol){
      return function(data){
        for (var i = 0; i < data.length; ++i) {
          logger.log(data[i]);
        }
        dataCol = data;
      }
    }
    // Common functions => outsourcing
    private handleRes(res : any, resFn? : callbackFn) {
      if(typeof resFn != 'undefined') {
        resFn(res)
      } else{
        this.$log.log(res);
      }
    }
    private handleErr(err : string, errFn? : callbackFn) {
      if(typeof errFn != 'undefined') {
        errFn(err)
      } else{
        this.$log.error(err);
      }
    }
  }

你可以试试:

() => this.handleRes(res, () => this.lobbyInitFn(this.$log, this.lobbyData))