[Nuxt.js] computedでオブジェクトの中身まで検知する方法 [vue.js]

vue-cli
nuxt

#1
//親コンポーネント
<template>
  <div class="create">
    <Preview :tmp_template="template"/>
    <image :tmp_template="template" v-model="template" @setTmpTemplate="setTemplate"/>
  </div>
</template>

<script>
export default {
  components: {
    Preview: () => import('@/components/preview.vue'),
    Image: () => import('@/components/image.vue'),
  },
  data() {
    return {
      template: {
        id: "",
        width: 0,
        height: 0,
        layers: [],
      },
    }
  },
  methods: {
    setTemplate(template) {
      this.template = template
    },
  },
}
</script>

親コンポーネントでcomputedで検知するデータを作成しています。

//子コンポーネント
//Image.vue
<template>
  <div>
    <div v-for="image in layer">
        <el-input v-model="image.value"></el-input>
    </div>
  </div>
</template>

<script>
export default {
  props: ['tmp_template'],
  computed: {
    layer() {
      return this.tmp_template.layers.filter(function (layer) {
        if(layer.type === 'image') {
          console.log(layer)
          return layer
        }
      })
    }
  },
}
</script>

image.vueObjectの一番下のネストの値を変更しています。

//子コンポーネント
//preview.vue
<script>
export default {
  props: ['tmp_template'],
  mounted() {
    this.ctx = this.$el.firstChild.firstElementChild.getContext('2d')
    this.drawCreative()
  },
  computed: {
    template() {
      return this.tmp_template
    }
  },
  watch: {
    template(val) {
      this.drawCreative()
    }
  },
  methods: {
    drawCreative() {
      this.ctx.canvas.width = this.tmp_template.width
      this.ctx.canvas.height = this.tmp_template.height
      this.tmp_template.layers.forEach(layer => {
        this.ctx.fillText(layer.value, layer.x_position, layer.y_position - -10)
      });
    },
  },
}
</script>

別の子コンポーネントでimage.vueで入力して値変更されたtmp_templateを監視しているのですが、検知されません。