1

私はJavascriptを使用しており、承認用のクラスを作成したいと考えています。

私のコードは

function Auth() {
    this.action;
    this.run = function() {
        $("#auth-dialog-id").dialog({
            width: 400,
            height: 250,
            modal: true,
            buttons: {
                OK: function() {
                    this.action();
                    $(this).dialog("close");
                },
                Cancel: function() {
                    $(this).dialog("close");
                }
            }

        });
    };
}

電話

    auth = new Auth();
    auth.action = a;
    auth.run();
}
function a() {
    alert("test");
}

しかし、私はエラーがあります

オブジェクト # にはメソッド 'action' がありません

誰でも私を助けることができますか?

4

1 に答える 1

0

問題を修正したのでthis.action = a、問題はOKボタン コールバック コンテキストにあります。ボタン クリック コールバック内では、インスタンスthisを参照しません。auth

ここで考えられる解決策の 1 つは、以下に示すようにクロージャー変数を使用することです。

function Auth() {
    var self = this;
    this.run = function () {
        $("#auth-dialog-id").dialog({
            width: 400,
            height: 250,
            modal: true,
            buttons: {
                OK: function () {
                    self.action();
                    $(this).dialog("close");
                },
                Cancel: function () {
                    $(this).dialog("close");
                }
            }

        });
    };
}

auth = new Auth();
auth.action = a;
auth.run();

デモ:フィドル

于 2013-11-09T13:06:08.400 に答える