两种方式绑定到模板

时间:2018-09-27 21:38:22

标签: laravel vue.js two-way-binding

我已经搜索了几个小时,但我想不起来。 我有什么办法可以绑定来自输入的数据,将其发送到模板,然后在这里使用数据?

让我画画...

  

edit.php

<form>
  <input v-model="?">
</form>

<prod-preview name="somehowsendthename"></prod-preview>
  

prod-preview.vue

<template>
    <h1>{{ name }}</h1>
</template>
<script>
export default {
    name: "product-preview",
    props: ["name"],
    data(){
        return {
            name: ""
        }
    },
}

不用担心绑定实际的组件,这是可行的。谢谢

2 个答案:

答案 0 :(得分:0)

类似的事情应该起作用:

// edit.vue
<template>
    <form>
      <input v-model="name">
    </form>
    <prod-preview :name="name"></prod-preview>
</template>
<script>
import ProdPreview from './prod-preview'
export default {
    name: "edit",
    components: [ProdPreview],
    data(){
        return {
            name: ""
        }
    },
}
</script>

// prod-preview.vue
<template>
    <h1>{{ name }}</h1>
</template>
<script>
export default {
    name: "product-preview",
    props: ["name"]
}
</script>

答案 1 :(得分:0)

要从刀片传递名称并将其绑定到视图组件中的数据,您需要使用其他名称的道具,例如initialName,然后设置使用v-绑定的数据名称。使用initialName这样的模型...

export default {
  name: "product-preview",
  props: ["initialName"],
  data(){
      return {
          name: this.initialName
      }
  },
}

请注意html属性不区分大小写,因此您可以这样传递它,正确的prop会接收它:

<prod-preview initial-name="{{ $name }}"></prod-preview>

您现在可以v绑定到“名称”,当您更改输入时,它将保持数据属性名称为最新,并且您将不会尝试更改不应该做的道具。