Vue.config.debug = true; Vue.config.devtools = true; var x = new Vue({ el: '#forms-render', data: { forms: [] }, ready: function() { this.fetchForms(); }, methods: { fetchForms: function() { this.$http.get(Routing.generate('api_get_forms'), function(forms) { for (var i = 0; i < forms.data.length; i++) { forms.data[i].errors = {}; } this.$set('forms', forms.data); }); }, save: function() { var that = this; var data = { forms: { forms: this.forms } }; this.$http.post(Routing.generate('api_post_forms'), data) .success(function (data) { console.log(data); }) .error(function (data) { console.log(data); if (data.hasOwnProperty("code") && data.code === 400 && data.hasOwnProperty('message') && data.message === "Validation Failed" ) { var k = 0; for (var i = 0; i < data.errors.children.forms.children.length; i++) { var form = data.errors.children.forms.children[i]; //console.log(form); for ( var j in form ) { var errorsInputs = form[j]; //console.log(errorsInputs); that.forms[k].errors = errorsInputs; //that.forms[k].label = 'toto'; k++; } } console.log(that.forms); //that.$set('forms', that.forms); //change rien avec ou sans } }); } } })