Comment mettre à jour les données d'un VueJS instance à partir d'un appel AJAX jQuery?

J'ai un VueJS exemple, avec quelques données :

var vm = new Vue({
    el: '#root',
    data: {
        id: '',
        name: {
            firstname: "", 
            lastname: "", 
            country: "", 
            valueset: false
        },
//...

Dans mon code HTML, j'ai aussi :

<input class="id" type="text" size="4" maxlength="4" v-model.lazy="id" v-on:change="create_casenr">

Donc après le remplissage de ce champ, la méthode create_casenr de mon exemple est déclenchée.

create_casenr: function(event) {
    //update the full name of user
    $.ajax({
        url: 'http://elk.example.com:9200/users/user/' + this.id
    })
    .done(function(data) {
        console.log(data);
        this.name = data._source;
        this.name.valueset = true;
        console.log(this.name);
    })
//...

Ce qui se passe, c'est que :

  • create_casenr est appelé le changement dans le domaine (OK)
  • de l'appel AJAX va traverser avec succès, je vois le résultat attendu sur la console pour les dataet this.name (OK)
  • mais name n'est pas mis à jour dans l'instance de VueJS.

Je peux voir, il n'est pas mis à jour car d'autres parties de mon code qui s'appuient sur elle de ne pas le voir; j'ai aussi vérifié avec le VueJS Chrome add-on et toutes les variables sont correctement définies (y compris id), sauf pour name.

Est-il une manière que je devrait traiter les données d'un VueJS exemple lorsqu'ils sont modifiés par l'intermédiaire d'un appel AJAX jQuery?

OriginalL'auteur WoJ | 2016-10-24