我的问题在于以下功能:
() => this.handleRes(res, this.lobbyInitFn(this.$log, this.lobbyData))
在Ctrl上引用lobbyData
变量的最佳方法是什么?
作为胖箭头语法的结果,我得到一个指向全局window
对象的指针。
目前,我只是在$log
方法中引用lobbyInitFn
函数,而在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);
}
}
}
答案 0 :(得分:0)
你可以尝试:
() => this.handleRes(res, () => this.lobbyInitFn(this.$log, this.lobbyData))