0

typescript でクラス コンストラクターの ID に変更イベントを追加しています。その変更イベント内でクラス関数にアクセスしたいのですが、イベント内では「これ」はクラスではないようです。そこから関数にアクセスするにはどうすればよいですか?

export class Document_Uploads {

        constructor() {
            $("#FormBrokerReferenceID").change(function () {
                 = $("#FormBrokerReferenceID").val();

                //inside this event it does not work           
                this.Validate()

            });

             // works here inside constructor
            this.Validate()

        }

    Validate() {
            var valid: bool = true;
             some other code
    }


}
4

1 に答える 1

5

あなたの問題には2つの解決策があります。

1 つ目は、TypeScript にスコープを処理させることです。

    constructor() {
        $("#FormBrokerReferenceID").change( () => {
             = $("#FormBrokerReferenceID").val();

            // Should now work...         
            this.Validate()

        });

         // works here inside constructor
        this.Validate()
    }

2 つ目は自分で処理することですが、これは TypeScript が行うことを手動で行っていますが、魔法ではないことを知っておく価値があります。これは、イベント内の意味を上書きしたくないがthis、「外側の」this にもアクセスしたい場合に便利です。

    constructor() {
        var self = this;

        $("#FormBrokerReferenceID").change(function () {
             = $("#FormBrokerReferenceID").val();

            // Should now work...         
            self.Validate()

        });

         // works here inside constructor
        this.Validate()
    }
于 2013-03-06T21:21:30.933 に答える