vue中父子组件Props双向绑定

事件处理方式

1. v-on指令

1.直接把 JavaScript 代码写在 v-on 指令中是不可行的,v-on指令需要接收一个调用的方法名称,




// 在 `methods` 对象中定义方法
methods: {
    greet: function (event) {
      // `this` 在方法里指向当前 Vue 实例
      alert('Hello ' + this.name + '!')
      // `event` 是原生 DOM 事件
      if (event) {
        alert(event.target.tagName)
      }
    }
  }

2. 事件内联处理器

2.除此之外vue还可以使用内联处理器,需要在内联语句处理器中访问原始的 DOM 事件。可以用特殊变量 $event 把它传入方法

  
  
  

// 在 `methods` 对象中定义方法
   methods: {
    say: function (message) {
      alert(message)
    },
    warn: function (message, event) {
    // 现在我们可以访问原生事件对象
        if (event) {
        event.preventDefault()
        }
        alert(message)
    }
  }

Props

所有的 prop 都使得其父子 prop 之间形成了一个单向下行绑定:父级 prop 的更新会向下流动到子组件中,但是反过来则不行。这样会防止从子组件意外改变父级组件的状态,从而导致你的应用的数据流向难以理解。

这里有两种常见的试图改变一个 prop 的情形:

  1. 这个 prop 用来传递一个初始值;这个子组件接下来希望将其作为一个本地的 prop 数据来使用。在这种情况下,最好定义一个本地的 data 属性并将这个 prop 用作其初始值:
props: ['initialCounter'],
data: function () {
  return {
    counter: this.initialCounter
  }
}
  1. 这个 prop 以一种原始的值传入且需要进行转换。在这种情况下,最好使用这个 prop 的值来定义一个计算属性:
props: ['size'],
computed: {
  normalizedSize: function () {
    return this.size.trim().toLowerCase()
  }
}

v-model

首先我们要知道v-model指令是用来在表单