无法从一个函数传递数据

时间:2016-06-08 18:45:13

标签: javascript vue.js

我的Vue组件如下:

    import '../forms/form.js'
    import '../forms/errors.js'

    export default{
        data(){
            return{
                form: new NewForm({
                    email: '',
                    password: '',
                    intendedUrl: '',
                    message: ''
                })
            }
        },

        methods: {
            /**
             * Login the user
             */
            login(e) {
                e.preventDefault();

                this.form.startProcessing();

                this.$http.post('/login/authenticate', this.form)
                        .then(function(response) {
                            this.form.finishProcessing();
                        },
                        function(response) {
                            this.form.setErrors(response.data);
                        });
            }
        }
    }

form.js 文件是

window.NewForm = function (data) {
    var form = this;

    $.extend(this, data);
    this.errors = new NewFormErrors();

    this.busy = false;
    this.successful = false;

    this.startProcessing = function () {
        form.errors.forget();
        form.busy = true;
        form.successful = false;
    };

    this.setErrors = function (errors) {
        console.log('okkk');
        form.busy = false;
        form.errors.set(errors);
    }
};

error.js

window.NewFormErrors = function () {
    this.errors = {};

    this.set = function (errors) {
        console.log(errors);
        this.errors= errors;
    };
};

在这里,this.form.startProcessing();似乎有效。但是我无法将数据传递给this.setErrorsconsole.log(errors)什么都不返回。或者它没有被执行。

1 个答案:

答案 0 :(得分:1)

我没有重新创建你的所有解决方案,但我会在延迟执行中怀疑这个值的含义所以我会尝试将代码修改为:

login(e) {
    e.preventDefault();
    var that = this ;
    this.form.startProcessing();

    this.$http.post('/login/authenticate', this.form)
         .then(function(response) {
                  that.form.finishProcessing();},
               function(response) {
                  that.form.setErrors(response.data); });
   }

我希望它会有所帮助。