vue组件双向数据绑定,vue两个组件相互调用

  vue组件双向数据绑定,vue两个组件相互调用

  本文主要介绍了vue实现两个组件之间的数据共享和修改,具有很好的参考价值。希望对你有帮助。来和边肖一起看看吧。

  在用vue开发的过程中,我们会遇到这样的情况。当我们将子组件引入父组件时,需要将父组件的值传递给子组件进行显示,子组件也可以改变父组件的值。

  以我目前的一个项目的开发为例,如下页所示:

  在父组件中,我引入了两个子组件,一个是左边的导航栏,另一个是中间的富文本编译器组件。当我点击左侧导航栏时,中间页面会切换,也就是改变引入的子组件。

  如何实现?首先在这个页面的index.vue中设置一个变量index,左侧导航栏中的每一项也对应一个索引值。导航菜单绑定了select函数,@select=handleSelect ,@是v-on的简称。

  HandleSelect函数接收参数,然后传输,再由父组件接收。

  handleSelect(key,keyPath) {

  console.log(key,key path);

  this.changeIndex(keyPath[1])

  },

  changeIndex:函数(键){

  这个。$emit(IndexChanged ,key)

  }

  这个。$emit(IndexChanged ,key)是将key的值传递给一个名为IndexChanged的函数,

  在index.vue中绑定IndexChanged来接收值,aside v-on:index changed= change($ event)/aside然后调用change函数。注意$ event是固定的写法,收到的键是来自子页的键。然后你可以通过这个键改变索引来切换页面。

  下面是一个更简单直观的例子来解释和创建一个新的Test.vue:

  模板

  div id=应用程序

  /div

  /模板

  脚本

  导出默认值{

  名称:“测试”,

  已安装(){

  },

  }

  /脚本

  风格

  /风格

  构建另一个Test2.vue:

  模板

  /模板

  脚本

  导出默认值{

  名称:“测试2”

  }

  /脚本

  样式范围

  /风格

  Test.vue是父组件,Test2.vue是子组件。首先,为Test配置路由,以便可以在浏览器上访问它,并为Test2定义一个模板,它可以在Test中使用。

  在router/index.js中添加以下代码

  从导入测试./components/Test ;

  Vue.use(路由器)

  导出默认新路由器({

  模式:“历史”,

  路线:[

  {

  路径:“/t”,

  名称:“测试”,

  组件:测试

  }

  ]

  })

  在main.js中,添加以下代码:

  从导入Test2。/components/Test2 ;

  Vue.use(测试2)

  新Vue({

  埃尔: #app ,

  路由器,

  组件:{

  App,

  测试2 :测试2

  },

  模板:“应用程序/”

  })

  现在把这个句子写在第二页上,

  模板

  差异

  {{text2}}

  /div

  /模板

  脚本

  导出默认值{

  名称:“测试2”,

  data(){

  返回{

  文本:“这是测试2页面”

  }

  }

  }

  /脚本

  样式范围

  /风格

  将test2引入test,并定义一个变量文本,然后显示在页面上。代码如下:

  模板

  div id=应用程序

  {{text1}}

  测试2/测试2

  /div

  /模板

  脚本

  从导入Test2。/Test2 ;

  导出默认值{

  名称:“测试”,

  组件:{Test2},

  data(){

  返回{

  文本:“这是测试1页面”

  }

  },

  已安装(){

  },

  }

  /脚本

  风格

  /风格

  浏览器访问http://localhost:8080/t,页面如下:

  现在实现Test2来接收Test1的值并显示:

  用于绑定数据的V-bind

  Test2 v-bind:text 1= text 1 /Test2

  传输的数据是测试页的text1,名称也是text1,可以不一样,但是接收时的名称和第一个是一样的。

  2 Test2页面接收数据,通过props接收:

  道具:[text1],

  收到后可以传给text2或者直接显示在页面上:

  模板

  差异

  {{text2}}

  {{text1}}

  /div

  /模板

  脚本

  导出默认值{

  名称:“测试2”,

  道具:[text1],

  data(){

  返回{

  文本:“这是测试2页面”

  }

  }

  }

  /脚本

  样式范围

  /风格

  收到text1值后,如何同步更改?您需要绑定另一个函数,如下所示:

  Test2 v-bind:text 1= text 1 v-on:text changed= change($ event)/Test2

  .

  方法:{

  更改(消息){

  this.text1=msg

  }

  },

  在test2中,只需将值传输给textChanged。

  已安装(){

  这个。$emit(textChanged ,我更改了text1的值)

  }

  补充知识:在vue中使用vuex,修改state的值

  1.安装vuex

  npm安装vuex -S

  2.在目录中创建一个存储文件。

  3.编辑方法以修改store.js中的状态

  然后在mian.js全球介绍

  用于最终装配

  的功能是通过使用突变来修改状态中的值。

  上面的vue实现了两个组件之间的数据共享和修改,这是边肖共享的全部内容。希望能给你一个参考,多多支持我们。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: