组件之间数据交互

有时候非父子关系的组件也需要通信。在简单的场景下,使用一个空的 Vue 实例作为中央事件总线:

var bus = new Vue()
// 触发组件 A 中的事件
bus.$emit(‘id-selected‘, 1)

// 在组件 B 创建的钩子中监听事件
bus.$on(‘id-selected‘, function (id) {
  // ...
})

 

实例代码如下:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <script type="text/javascript" src="vue/vue.min.js"></script>
</head>

<body>
    <div id="app8">
        <ul>
            <li><componenta/></li>
            <li><componentb/></li>
        </ul>
    </div>
    <script type="text/javascript">
        var bus = new Vue();
        Vue.component(‘componenta‘, {

            template: ‘<div><input type="button" value="发布事件" @click="fabuevent" /></div>‘,
            data:function () {
              return {
                counter: 0
              }
            },
            methods:{
              fabuevent:function(){
                   this.counter++;
                   bus.$emit(‘id-selected‘, this.counter);
                }
            }
          });
        Vue.component(‘componentb‘, {
                template: ‘<div >{{counter}}</div>‘,
                data:function () {
                  return {
                    counter: 0
                  }
                },
                created:function(){
                    var self=this;
                  bus.$on(‘id-selected‘, function (id) {
                      self.counter=id;
                      console.info("id:"+id);
                  })
                }
              })
        var app8 = new Vue({
          el:"#app8"
        })
    </script>
</body>
</html>

这里使用 created或者 beforeCreate 事件。

时间: 2024-12-14 21:18:09

组件之间数据交互的相关文章

Vue2.0子同级组件之间数据交互

接着我们进入Demo,首先我们可以删除掉模板项目中src/components/Hello.vue,然后在App.vue中删除对于Hello子组件的注册和使用还有一些其他无关紧要的东西,此时的App.vue应为这样 一 .我们先来创建中央事件总线,在src/assets/下创建一个eventBus.js,内容如下(eventBus中我们只创建了一个新的Vue实例,以后它就承担起了组件之间通信的桥梁了,也就是中央事件总线.) 二 . 创建一个firstChild组件,引入eventBus这个事件总

Angular开发实践(四):组件之间的交互

在Angular应用开发中,组件可以说是随处可见的.本篇文章将介绍几种常见的组件通讯场景,也就是让两个或多个组件之间交互的方法. 根据数据的传递方向,分为父组件向子组件传递.子组件向父组件传递及通过服务传递三种交互方法. 父组件向子组件传递 子组件通过@Input装饰器定义输入属性,然后父组件在引用子组件的时候通过这些输入属性向子组件传递数据,子组件可通过setter或ngOnChanges()来截听输入属性值的变化. 先定义两个组件,分别为子组件DemoChildComponent和父组件De

vue学习之父组件与子组件之间的交互

1.父组件数据传给子组件 父组件中的msgfather定义数据 在之组件中通过设置props来取得希望从父组件中获得的值 通过设置这两个属性就可以从父组件传数据到子组件 2.子组件传数据给父组件(这里只介绍$emit) 触发child-tell-me事件,并传参 "this is child message!" 在父组件会找到child-tell-me方法并执行.

vuex 实现vue中多个组件之间数据同步以及数据共享。

前言 在一些项目中有很多数据状态之间要实现数据共享状态共享,例如购物车的数据.用户的登录状态等等.vue父元素是可以通过props向子元素传递参数,子元素也可以通用smit向父元素传递参数.但是像购物车这种在项目中多个位置的引用时就会变得很麻烦.例如项目中使用了三个购物车的组件,那么当其中一个组件的值发生改变时,就要通过自身告诉父组件我的值发生改变了,然后父组件在通知其他两个购物车组件值发生改变了,需要进行同步,这样就会变得很麻烦.而vue-v就可以帮助我们解决这个繁琐的问题.

5月20日重点:当请求的参数是动态的形式时,原生app与h5页面之间数据交互的方法

方案一: 1.app在打开H5页面的时候,把需要给的参数,以get的形式,放在H5的url中. 2.然后H5的js从url中获取到需要的参数,拼接到ajax请求的url中. 3.H5ajax请求,页面渲染. 方案二: 1.app方构建与H5交互的协议 2.H5写一个带参命名函数.在此方法内,填写数据获取后的操作代码. 并把函数名告知app方. 2.app方请求数据,然后以post方法,把请求到的全部数据传入已知的函数中,并调用此函数. 3.H5负责把接收到的数据,进行页面渲染. 注意:1.这个方

Unity3D 与 objective-c 之间数据交互。iOS SDK接口封装Unity3D接口 .-- 转载

Unity 3D 简单工程的创建.与Xcode 导出到iOS 平台请看这 Unity3D 学习 创建简单的按钮.相应事件 Unity C# 代码 using UnityEngine; using System.Collections; using System.Runtime.InteropServices; public class testFeil : MonoBehaviour { [DllImport("__Internal")] private static extern v

Fragment案例之:Fragment与其他组件间数据交互

需求:实现如图效果,当我点击左边item,并将对应内容显示到右边Fragment上,比如我点击了北京,那么就将对应的"北京"二字显示在右边Fragment上. 主要代码如下,需要特别注意的地方都会有特殊标示. activity_main.xml: <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.an

Android进阶之Fragment与Activity之间的数据交互

1 为什么 因为Fragment和Activity一样是具有生命周期,不是一般的bean通过构造函数传值,会造成异常. 2 Activity把值传递给Fragment 2.1 第一种方式,也是最常用的方式,就是使用Bundle来传递参数 (1)宿主Activity/FragmentAdapter中: Bundle bundle = new Bundle(); bundle.putString(Constant.INTENT_ID, productId); Fragment fragment =

Angular组件之间通讯

组件之间会有下列3种关系: 1. 父子关系 2. 兄弟关系 3. 没有直接关系 通常采用下列方式处理(某些方式是框架特有)组件间的通讯,如下: 1父子组件之间的交互(@Input/@Output/模板变量/@ViewChild) 2非父子组件(Service/localStorage) 3还可以利用Session等服务器端的解决方法 Angular组件间通讯方法: 1.父子组件之间的通讯 @Input:是属性绑定,父组件向子组件传递数据 @Output:是事件绑定,子组件向父组件传递数据的同时触