简体   繁体   English

Vue.js 没有设置数据

[英]Vue.js not setting data

I'm trying to do some simple form validation using Laravel 5.3 and Vue.js.我正在尝试使用 Laravel 5.3 和 Vue.js 进行一些简单的表单验证。

Laravel controller: Laravel 控制器:

 public function test(\Illuminate\Http\Request $request)
    {
        $this->validate($request, [
            'name' => 'required',
            'date' => 'required'
        ]);
...
    }

Vue data: Vue数据:

let app = new Vue({
        el: '#app',

data: {
        submitted: false,
        errors: [],
        post: {
               name: '',
               date: '',
              },
},

Vue post: Vue帖子:

Vue.http.post('url', post).then((response) => {
    // form submission successful, reset post data and set submitted to true
    app.post = {
        name: '',
        date: '',
    };

    // clear previous form errors
    app.$set('errors', '');

    app.submitted = true;

}, (response) => {
    // form submission failed, pass form  errors to errors array
    console.log(response.data.name); //"The Name field is required."
    app.$set('errors', response.data); // TypeError
});

I'm getting我越来越

TypeError: can't assign to properties of (new String("errors")): not an object TypeError:无法分配给(新字符串(“错误”))的属性:不是对象

with app.$set('errors', response.data);app.$set('errors', response.data);

Where am I going wrong?我哪里错了?

Check vm.$set(object, key, value) , you're trying to add a property to the string 'errors' using response.data as the key.检查vm.$set(object, key, value) ,您正在尝试使用response.data作为键向字符串'errors' 添加属性。

The correct syntax is app.$set(app, 'errors', response.data) but app.errors = response.data should work equally well.正确的语法是app.$set(app, 'errors', response.data)app.errors = response.data应该同样有效。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM