13

我是 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) 
        }
    }
});

有没有更好的方法来做到这一点,或者您可以对上述代码提出任何改进建议?

4

2 回答 2

15

您可以使用手册中所示的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
  }
}
});
于 2018-09-15T14:10:39.077 回答
5

借用——> https://stackoverflow.com/a/48579303/4050261

您可以在父容器上绑定单个onchange事件并受益于更改事件冒泡的事实:

<div class="container" @change="someThingChanged()">
  <input v-model="foo">
  <input v-model="bar">
  ... etc.
</div>
于 2020-03-24T18:44:02.630 回答