这在mount()中没有定义

时间:2018-09-04 17:19:57

标签: javascript vue.js

我正在尝试从API提取数据,然后使用mounted()方法通过vue显示数据,但是当我尝试使用它时,它表示this基本上没有定义。

我没有使用NodeJS。

<script>
"use strict";

    (function() {
        var app = new Vue({
            el: "#app",

            data () {
                return {
                    books: null
                }
            },

            mounted () {
                var api = fermata.json("/api/books");
                api.get(function(err, res) {
                    if(res.success) {
                        this.books = res.result;
                    }
                });
            }
        });
    })();
</script>

哪个给我以下错误

Uncaught TypeError: Cannot set property 'books' of undefined

Fermata

1 个答案:

答案 0 :(得分:0)

您的代码应像这样,为this关键字创建别名,而api.get可能会失去this的范围。

mounted () {
        var api = fermata.json("/api/books");
        var _this = this;
        api.get(function(err, res) {
            if(res.success) {
                _this.books = res.result;
            }
        });
    }