开发者问题收集

Vue js 1.0 在另一个方法中调用一个方法抛出“不是函数”

2017-07-31
359

我正在尝试在另一个 vue js 方法中重用一个方法,如下所示:-

sendCode: function () {

            this.showSection("SENDING");


            $.ajax({
                url: "someurl" + app.searchResponse.Id,
                type: "POST",
                contentType: "application/json",

                success: function (result) {

                    if (result.Success) {

                        this.showSection("SMS SENT");
                    }
                    else {
                        this.showSection("SMS FAILED");
                    }

                },
                error: function (error) {

                    console.log(error);
                    this.showSection("SMS FAILED");

                }
            });

        },
        showSection: function (section) {

            return app.ui.currentSection = section;
        }

但是我遇到了类型错误,指出 this.showSection() 不是一个函数。

1个回答

在 ajax 回调中,vue 实例 this 不可用,因为它属于不同的范围。因此,在 ajax 之前使用变量声明 $this = this ,并在 ajax 回调中使用 $this

sendCode: function () {

    this.showSection("SENDING");

    var $this = this;

    $.ajax({
        url: "someurl" + app.searchResponse.Id,
        type: "POST",
        contentType: "application/json",

        success: function (result) {

            if (result.Success) {

                $this.showSection("SMS SENT");
            }
            else {
                $this.showSection("SMS FAILED");
            }

        },
        error: function (error) {

            console.log(error);
            $this.showSection("SMS FAILED");

        }
    });

},
Muthu Kumaran
2017-07-31