相关疑难解决方法(0)

将类方法作为Typescript中的参数传递

我正在寻找将类方法传递给函数的可能性,然后函数可以在该类的实例上执行该函数.像伪代码那样:(注意这是一个抽象的例子)

class Foo {
    public somefunc() {
        // do some
    }
    public anyfunc() {
        // do any
    }
}

function bar(obj: Foo ,func: "Foo.method") {  // "that's what im looking for"
    obj.func();
}

bar(new Foo(), Foo.somefunc);  // do some
bar(new Foo(), Foo.anyfunc);  // do any
Run Code Online (Sandbox Code Playgroud)

这样做有可能吗?

我知道我可以这样做:

class Foo {
    static somefunc(fooObj: Foo) {
        // do some
    }
    static anyfunc(fooObj: Foo) {
        // do any
    }
}

interface func {
    (fooObj: Foo);
}

function bar(obj: Foo, fn: func) {
    fn(obj); …
Run Code Online (Sandbox Code Playgroud)

javascript parameters function typescript

29
推荐指数
5
解决办法
3万
查看次数

TypeScript 点击事件处理程序

在 Javascript 中,以下代码按预期工作:

$("#field").click(eventHandler);

function eventHander() {
  invokeClassMethod();
  // do other stuff
}
Run Code Online (Sandbox Code Playgroud)

我在 Typescript 中尝试了此操作,但收到错误,因为“this”的上下文似乎已更改为不属于我的类的内容。

$("#field").click(this.eventHandler);

eventHandler() {
  this.invokeClassMethod();
  // do other stuff
}
Run Code Online (Sandbox Code Playgroud)

给我一个错误,因为“invokeClassMethod”未定义。

我是 Typescript 的新手,有人可以告诉我出了什么问题以及如何修复它吗?

typescript jquery-events

3
推荐指数
1
解决办法
1万
查看次数

$rootScope.$on 上的引用“this”为空

在我的 Typescript AngularJS 控制器中声明了以下构造函数。

static $inject: Array<string> = [
    '$rootScope',
    'BookingRepository'
];
constructor(
    $rootScope: ng.IRootScopeService,
    bookingRepository: soft.data.BookingRepository
) {
    super();

    this.$rootScope = $rootScope;
    this.$rootScope.$on('accessController_onNavAccessSelected', this.accessController_onNavAccessSelected);

    this.bookingRepository = bookingRepository;
}
Run Code Online (Sandbox Code Playgroud)

但是当 accessController_onNavAccessSelected 被调用时,当我引用“this”时我得到了空值。我期待控制器的实例。

// Listening Events
accessController_onNavAccessSelected(event: ng.IAngularEvent, accessViewModel: soft.data.AccessViewModel): void {
    console.log(this);
}
Run Code Online (Sandbox Code Playgroud)

我错过了什么?或者我如何获得我的控制器实例的引用?

angularjs typescript

2
推荐指数
1
解决办法
176
查看次数