vuejs父子组件通信

1 篇文章 0 订阅

工具使用

  • 包管理:npm
  • 构建工具:grunt
  • 模块加载器:webpack

传递数据

“prop” 是组件数据的一个字段,期望从父组件传下来。子组件需要显式地用 props 选项 声明 props:
在子组件 jade模板中,书写

.hot-item-container(@click="openHotPlugins(item.appkey)")

在子组件 export default中,书写

 props: [
     'item'
 ]

prop 默认是单向绑定:当父组件的属性变化时,将传导给子组件,但是反过来不会。这是为了防止子组件无意修改了父组件的状态。不过,也可以使用 .sync 绑定修饰符显式地强制双向或单次绑定:
在父组件 jade模板中,书写

  .hot-item-container(':item.sync'='item')

父子组件通信

子组件可以用 this. parent访this. children,包含它所有的子元素。
这让父组件与子组件紧密地耦合,Vue 实例实现了一个自定义事件接口,用于在组件树中通信。这个事件系统独立于原生 DOM 事件,做法也不同。

每个 Vue 实例都是一个事件触发器:

on() emit() 在Vue 实例上面触发事件;
broadcast()广 dispatch() 派发事件,事件沿着父链冒泡;

以点击侧栏主面板响应为例,在子组件export default中,书写

 methods:{
     selectNav(event){
         this.$dispatch('selectNav',event.target.innerHTML)
     },
}

在父组件 export default中,书写

events:{
     selectNav(title){
         this.appTitle = title
         if(title !== '全部应用'){
             this.hotshow = false;
         }else{
             this.hotshow = true;
         }
    }
}

由此实现了子模板到父模板的数据传递和事件触发,达到了主面板响应的目的
经过初步实践,这样的传递数据和父子组件通信,给开发者的感觉是思维清晰,容易上手,必要的组件分割不因为依赖束手束脚~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值