前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >cssjshtml vue.js 事件传值 子向父组件传值

cssjshtml vue.js 事件传值 子向父组件传值

作者头像
葫芦
发布2019-04-17 15:21:08
4.4K0
发布2019-04-17 15:21:08
举报
文章被收录于专栏:葫芦葫芦

子向父组件传值调用顺序:

header.vue子组件调用:

代码语言:javascript
复制
methods: {
  changetitle: function () {
    // this.title1 = 'changed';
    this.$emit("titleChanged","子to父组件传值");
  }
}
代码语言:javascript
复制

去父组件app.vue找titleChanged:

代码语言:javascript
复制
代码语言:javascript
复制
<app-header v-on:titleChanged="updatetitle($event)" v-bind:title1="title1"></app-header>

父组件实现方法:

代码语言:javascript
复制
methods:{
  updatetitle(title){
    this.title1=title;
  }
},

通过bind影响header和footer的title:

代码语言:javascript
复制
<app-header v-on:titleChanged="updatetitle($event)" v-bind:title1="title1"></app-header>
<app-footer v-bind:title1="title1"></app-footer>

Header.vue

代码语言:javascript
复制
<template>
  <header v-on:click="changetitle">
    <h1>{{title}}{{title1}}</h1>
  </header>
</template>

<script>
  export default {
    name: 'app-header',
    props: {
      title1: {
        type: String
      }
    },
    data() {
      return {
        title: 'Vue.js Demo'
      }
    },
    methods: {
      changetitle: function () {
        // this.title1 = 'changed';
        this.$emit("titleChanged","子to父组件传值");
      }
    }
  }
</script>

<!-- Add "scoped" attribute to limit CSS to this component only -->
<style scoped>
  header {
    background: lightgreen;
    padding: 10px;
  }

  h1 {
    color: #222;
    text-align: center;
  }
</style>

App.vue

代码语言:javascript
复制
<!-- 1模板:html结构 -->
<template>
  <div id="app">
    <app-header v-on:titleChanged="updatetitle($event)" v-bind:title1="title1"></app-header>
    <users v-bind:users="users"></users>
    <users v-bind:users="users"></users>

    <app-footer v-bind:title1="title1"></app-footer>
  </div>
</template>

<!-- 2行为:逻辑处理 -->
<script>
  // 局部注册组件
  import Users from './components/Users'
  import Header from './components/Header'
  import Footer from './components/Footer'

  export default {
    name: 'App',
    data() {
      return {
        // title: "这是一个干净的脚手架项目!"
        users:[
          {name:"brownwang",position:"运维开发",show:false},
          {name:"brownwang",position:"运维开发",show:false},
          {name:"brownwang",position:"运维开发",show:false},
          {name:"brownwang",position:"运维开发",show:false}],
        title1:"传递的是一个值 number string boolean"
      }
    },
    methods:{
      updatetitle(title){
        this.title1=title;
      }
    },

    components: {
      "users": Users,
      "app-header": Header,
      "app-footer": Footer
    }
  }
</script>

<!-- 3样式:解决样式 -->
<style scoped>
  h1 {
    color: purple;
  }
</style>

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019/01/08 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 子向父组件传值调用顺序:
  • Header.vue
  • App.vue
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档