1

vueリソースを使用してリクエストを投稿するボディとしてvueデータを投稿する

<script>
    //var VueValidator = require ('vue-validator');
    new Vue({
        el: '#app',
        data: {
            email: '',
            password: '',
            _token: '{{csrf_token()}}',
            uid: '{{$row->id}}'
        },
        methods: {
            changeCredentials: function (e) {
                console.log(this.email); --> **RETURNS EMPTY**
                var resource = this.$resource('myurl/{id}');
                resource.save({id: this.uid}, {body: function () {
                    console.log(this.data);
                    return this.data;
                }}).then((response) => {
                    // success callback
                    console.log(response);
                }, (response) => {
                    // error callback
                });


                //alert('here');
            }
        }
    });
</script>

this.uid は機能しているのに this.email が機能していない理由を教えてください。ありがとう

4

1 に答える 1

1

これは、アクセスしthis.dataているときに、現在のスコープを変更するコールバック内にいるためですthis。実際には Vue コンポーネントではありません。

設定_thisすることで、スコープを変更してコールバックに移動すると、その変数にアクセスできます。

changeCredentials: function () {
    var resource = this.$resource('myurl/{id}');
    var _this = this;

    resource.save({id: _this.uid}, {body: function () {
        console.log(_this.data);

        return _this.data;
    }});
}
于 2016-09-01T08:02:21.383 に答える