Vue入门 - 组件通信
2017-03-31 16:35
330 查看
1 父子组件构建顺序
先触发子组件的mounted钩子,再触发父组件的mounted钩子。2 父组件向子组件传递数据(prop)
在父组件的模版中对子组件标签进行属性绑定<child message="hello"></child>
在子组件中使用props属性显式地接收
props: ['message'],然后即可使用this.message使用。
若需要动态绑定属性,则需使用v-bind,或简写
:message="hello"
使用字面量语法
child message="1",此时绑定的是字符串”1”,若想绑定数值,需使用v-bind,让它的值被当作js表达式计算。
props的值是单项流动的,并不会从子组件返回父组件。
不应在子组件内改变props的值,若需要,则需在子组件内定义一个局部变量,并用prop初始化它,或使用计算属性。
2.1 Prop验证
可以为组件的props指定验证规则,若传入的数据不符合规则,vue会发出警告。要指定验证规格,需要用对象的形式,而不能用字符串数组
若prop验证失败,则在开发版本中抛出警告
//... props: { propA: null, //任何类型都可以 propB: Number, //数字类型 propC: [String, Number] //多种类型,字符串或数值都可 propD: { //字符串类型,且必须传。 type: String, required: true }, propE: { type: Number, //数字类型,且有默认值 default: 100 }, propF: { //数组/对象的默认值应由工厂函数返回。 type: Object, default: function(){ return { message: 'Hello' } } }, propE: { //自定义验证规则。 validator: function(value){ return value > 10 } } }
type 可以是下面原生构造器:
1. String
2. Number
3. Boolean
4. Function
5. Object
6. Array
也可以是一个自定义构造器函数,使用 instanceof 检测。
3 子组件向父组件传递数据(自定义事件)
子组件通过自定义事件将数据传递给父组件。子组件中调用
this.$emit('funcName',data)。
父组件使用v-on监听自定义事件
<child @funcName='sayHello'></child>,子组件触发this.$emit时会自动触发。
若想给某元素监听原生事件,可使用.native修饰符。
<child @click.native="sayHello"></child>
参考代码:
//parent component <template> <div v-on:childready="doSomthing"> </template> <script> //... methods:{ doSomthing:function(childVm){ //... } } </script>
//child component //... this.$emit('childready',this); //...
4 使用自定义事件的表单输入组件
自定义事件可以用来创建自定义的表单输入组件,使用 v-model 来进行数据双向绑定。<input v-model="something">
要让组件的 v-model 生效,它必须:
接收一个 value 属性
props:['value']
在有新的 value 时触发 input 事件。
this.$emit('input',data)
例子:
//parent <child-form v-model="name"></child-form>
//child <template> <input ref="input" :value="value" @input="updateValue"> </template> <script> export default { name: "form", props: ['value'], methods:{ updateValue:function(){ //获取节点 //var el = this.$refs.input; this.$emit('input', this.value); } } } </script>
5 非父子组件通信
相关文章推荐
- vue.js入门(3)——组件通信
- Vue.js入门(三)——关于组件以及组件通信
- vue.js入门(3)――详解组件通信
- Vue.js入门学习--父子组件的说明和简单通信(十)
- vue从入门到放弃--- 父子组件通信
- 详解Vue.js――60分钟组件快速入门(上篇)
- Vue.js学习 Item11 – 组件与组件间的通信
- vue 父子组件通信
- Android笔记二十八.Service组件入门(二).绑定本地Service并与之通信
- 通信vue2.0组件
- 父子组件通信vue.js
- Android笔记二十八.Service组件入门(二).绑定本地Service并与之通信
- vue2.0组件通信各种情况总结与实例分析
- Vue.js——60分钟组件快速入门(下篇)
- Vuejs第十篇之vuejs父子组件通信
- Vuejs——(10)组件——父子组件通信
- vue.js 2.0父子组件学习入门套路
- 转: Vue.js——60分钟组件快速入门(上篇)
- Vue.js——60分钟组件快速入门(上篇)
- Vue.js每天必学之组件与组件间的通信