如何在vue.js组件之间进行数据传递

JavaScript042

如何在vue.js组件之间进行数据传递,第1张

组件与组件之间,还存在着不同的关系。父子关系与兄弟关系(不是父子的都暂称为兄弟吧)。

父子组件

父子关系即是组件 A 在它的模板中使用了组件 B,那么组件 A 就是父组件,组件 B 就是子组件。

子组件想要使用父组件的数据,我们需要通过子组件的 props 选项来获得父组件传过来的数据。以下我使用在 .vue 文件中的格式来写例子。

如何传递数据

在父组件 father.vue 中引用子组件 child.vue,把 name 的值传给 child 组件。

<template>

<div class="app">

// message 定义在子组件的 props 中

<child :message="name"></child>

</div>

</template>

<script>   import child from './child.vue'   export default {        components: {            child        },        data() {            return {                name: 'linxin'            }        }    }</script>

在子组件 child.vue 中的 props 选项中声明它期待获得的数据

<template>

<span>Hello {{message}}</span>

</template>

<script>   export default {        // 在 props 中声明获取父组件的数据通过 message 传过来        props: ['message']    }</script>

那么页面中就会渲染出:Hello linxin

prop 是单向绑定的:当父组件的属性变化时,将传导给子组件,但是不会反过来。修改子组件的 prop 值,是不会传回给父组件去更新视图的。那么子组件要如何去与父组件通讯呢?

那就是自定义事件。通过在父组件 $on(eventName) 监听自定义事件,当子组件里 $emit(eventName) 触发该自定义事件的时候,父组件执行相应的操作。

比如在父组件中控制一个弹框子组件的显示,在子组件中按下关闭之后,告诉父组件去隐藏它,然后父组件就执行操作隐藏弹框。例如在子组件中:

这个emit就是触发事件的地方。

如果是复杂场景,或者不相关的组件之间,建议用vuex,这个相当于Angular中的注册事件,具体过程可以参考官方手册,写的例子和图例都很详细了

修改vue对象里面的data就是了

比如页面上有个 input为动态计算的 <input type="text" v-model = "aa"/>

在vue对象里初始化 data{ aa:0

}

bb:function(){

this.aa= ‘你想搞得’

}

1、vue-cli webpack全局引入jquery

(1) 首先 npm install jquery --save (--save 的意思是将模块安装到项目目录下,并在package文件的dependencies节点写入依赖。)

(2)在webpack.base.conf.js里加入

1

var webpack = require("webpack")

(3)在module.exports的最后加入

1234567

plugins: [ new webpack.optimize.CommonsChunkPlugin('common.js'), new webpack.ProvidePlugin({ jQuery: "jquery", $: "jquery" })]

(4) 在main.js 引入就ok了(测试这一步不用也可以)

1

import $ from 'jquery'

(5)然后 npm run dev 就可以在页面中直接用$ 了.