Vue js 1.0调用另一个方法中的方法抛出'not a function'

时间:2017-07-31 10:59:19

标签: javascript vue.js

我正在尝试在我的另一个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 个答案:

答案 0 :(得分:1)

在ajax回调中,vue实例this不可用,因为它是一个不同的范围。因此,在$this = this之前使用变量声明ajax,并在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");

        }
    });

},