2017-06-08 2 views
0

J'ai un POJO que je passe à un composant vue - évidemment, les valeurs de cet objet peuvent être mises à jour par la liaison de données bidirectionnelle de vue.Comment mieux implémenter le modèle delta (PUT/PATCH) dans vue.js?

Après avoir utilisé Backbone.js pendant quelques années et ayant pris l'habitude de modèles étant des cas de Backbone.Model qui a gardé la trace de leurs propriétés modifiées, j'ai du mal à envelopper ma tête autour de la façon dont on pourrait mieux mettre en œuvre une fonctionnalité toJSONDelta() -comme (renvoyant une copie de toutes les propriétés modifiées des données de mon composant vue) "the way way".

Répondre

-1

Peut-être que vous pouvez utiliser quelque chose comme:

var app = new Vue({ 
     el: "#root", 
     data: { 
      a: 10, 
      b: 20, 
      c: { 
       loveJS: true, 
       vue: "isAwesome" 
      } 
     }, 
     methods: { 
      track: (function(history){ 
       return function(n){ 
        history.push(n) 
        console.log(history) 
       } 
      })([ /* history store */ ]) 
     }, 
     mounted: function(){ 
      this.$watch("$data", function(n){ 
       this.track(JSON.parse(JSON.stringify(n))) // to remove watchers 
      }, { deep: true, immediate: true}); 
     } 
    }) 

Ensuite, vous pouvez utiliser quelque chose comme recursive-diff pour comparer et générer des diff entre deux points dans l'histoire ou pousser le nouvel objet dans quelque chose comme object-history qui sera ensuite gérer l'histoire pour vous.