.lazy
在默认情况下, v-model 在 input 事件中同步输入框的值与数据, 但你可以添加一个修饰符 lazy , 从而转变为在 change 事件中同步:
- <!-- 在 "change" 而不是 "input" 事件中更新 -->
- <input v-model.lazy="msg">
- .number
如果想自动将用户的输入值转为 Number 类型 (如果原值的转换结果为 NaN 则返回原值), 可以添加一个修饰符 number 给 v-model 来处理输入值:
<input v-model.number="age" type="number">
这通常很有用, 因为在 type="number" 时 html 中输入的值也总是会返回字符串类型.
.trim
如果要自动过滤用户输入的首尾空格, 可以添加 trim 修饰符到 v-model 上过滤输入:
- <input v-model.trim="msg">
- <p id="app">
- <runoob></runoob>
- </p>
- <script>
- // 注册
- vue.component('runoob', {
- template: '<h1 > 自定义组件!</h1>'
- })
- // 创建根实例
- new Vue({
- el: '#app'
- })
- </script>
注册一个简单的局部组件 runoob, 并使用它:
- <p id="app">
- <runoob></runoob>
- </p>
- <script>
- var Child = {
- template: '<h1 > 自定义组件!</h1>'
- }
- // 创建根实例
- new Vue({
- el: '#app',
- components: {
- // <runoob> 将只在父模板可用
- 'runoob': Child
- }
- })
- </script>
- Prop
prop 是父组件用来传递数据的一个自定义属性.
父组件的数据需要通过 props 把数据传给子组件, 子组件需要显式地用 props 选项声明 "prop":
Prop 实例
- <p id="app">
- <child message="hello!"></child>
- </p>
- <script>
- // 注册
- Vue.component('child', {
- // 声明 props
- props: ['message'],
- // 同样也可以在 vm 实例中像 "this.message" 这样使用
- template: '<span>{{ message }}</span>'
- })
- // 创建根实例
- new Vue({
- el: '#app'
- })
- </script>
以下实例中将 v-bind 指令将 todo 传到每一个重复的组件中:
Prop 实例
- <p id="app">
- <ol>
- <todo-item v-for="item in sites" v-bind:todo="item"></todo-item>
- </ol>
- </p>
- <script>
- Vue.component('todo-item', {
- props: ['todo'],
- template: '<li>{{ todo.text }}</li>'
- })
- new Vue({
- el: '#app',
- data: {
- sites: [
- { text: 'Runoob' },
- { text: 'Google' },
- { text: 'Taobao' }
- ]
- }
- })
- </script>
尝试一下 »
注意: prop 是单向绑定的: 当父组件的属性变化时, 将传导给子组件, 但是不会反过来.
来源: https://www.2cto.com/kf/201807/759204.html