Как реализовать грязное состояние в VueJs - PullRequest
0 голосов
/ 15 сентября 2018

Я новичок в VueJs и работаю над формой, которую хочу включить кнопку Save только тогда, когда в модели происходит изменение.

Моя первоначальная мысль - compute грязная функция, сравнивающая исходную модель с текущей.

Примечание: Этот код не проверен, он приведен только для примера.

var app = new Vue({
    el: '#app',
    data: {a:0, b:'', c:{c1:null, c2:0, c3:'test'}},
    initialData: null,
    mounted():{ initialData = JSON.parse(JSON.stringify(data));},
    computed: {
        isDirty: function () {
          return JSON.stringify(data) === JSON.stringify(initialData) 
        }
    }
});

Есть ли лучший способ сделать это или есть какие-либо улучшения, которые вы могли бы предложить в вышеупомянутом коде?

1 Ответ

0 голосов
/ 15 сентября 2018

Вы можете использовать deep параметр watch, как показано в руководстве

var app = new Vue({
el: '#app',
data: 
{
  model:
  {
    a:0, 
    b:'', 
    c:
    {
      c1:null, 
      c2:0, 
      c3:'test'
    }
  },
  dirty: false
},
watch:
{
  model:
  {
    handler(newVal, oldVal)
    {
      this.dirty = true;
    },
    deep: true
  }
}
});
...