美文网首页
props和$emit

props和$emit

作者: charmingcheng | 来源:发表于2019-12-05 16:40 被阅读0次

props

父组件向子组件传值,子组件调用

$emit

子组件调用父组件中定义的方法

父组件

<template>
  <div id="app">
    <h1>在线翻译</h1>
    <TranslateForm @formSubmit='translateText' :title=msg />
    <textarea v-text="translatedText" class="textarea" readonly="readonly"></textarea>
  </div>
</template>

<script>
import TranslateForm from '@/components/TranslateForm'

export default {
  name: 'App',
  data() {
    return {
      msg: '请输入内容',
      translatedText: ''
    }
  },
  components:{
      TranslateForm
  },
  methods:{
    translateText (text, language) {
      this.$axios.get('https://translate.yandex.net/api/v1.5/tr.json/translate?key=你自己的KEY&lang='+language+'&text='+text).then((response) => {
        this.translatedText = response.data.text[0];
      })
    }
  }
}
</script>

<style>
#app {
  text-align: center;
}
.textarea {
  width: 800px;
  height: 200px;
  margin: 20px auto;
  display: block;
  padding: 5px;
}
</style>

子组件(TranslateForm.vue)

<template>
  <div id="translate-form">
    <form>
        <textarea class="textarea" v-model="textToTranslate" :placeholder="title"></textarea>
        <select v-model="language" class="language">
          <option value="en">英语</option>
          <option value="ru">俄语</option>
          <option value="ko">朝鲜语</option>
          <option value="ja">日语</option>
          <option value="es">西班牙语</option>
          <option value="it">意大利语</option>
          <option value="de">德语</option>
          <option value="zh">中文</option>
        </select>
      <input type="submit"  value="翻译"  @click="formSubmit">
    </form>
  </div>
</template>

<script>
export default {
  name: 'TranslateForm',
  props: ['title'],
  data () {
    return{
      textToTranslate:'',
      language: 'en'
    }
  },
  methods: {
    formSubmit (e) {
      this.$emit('formSubmit', this.textToTranslate, this.language);
      e.preventDefault();
    }
  }
}
</script>

<style>
.language {
  width: 200px;
  height: 30px;
  margin-right: 20px;
}
input[type="submit"] {
  display: inline-block;
  width: 120px;
  height: 30px;
}
</style>

相关文章

  • Vue组建通信的几种方法

    组件通信一 —— props和$emit props和$emit 父组件 向 子组件 传递数据 用 props 子...

  • props和$emit

    props 父组件向子组件传值,子组件调用 $emit 子组件调用父组件中定义的方法 父组件 子组件(Transl...

  • vue组件的使用

    props和$emit 组件间通讯和自定义事件 父子通讯 props $emit兄弟组件或者隔代组件使用自定义事件...

  • vue组件通信

    通常父子组件通信都是用props和$emit进行传递,父组件通过props传值给子组件,子组件通过$emit传值给...

  • Vue入门-实现一个简陋的todolist

    Vue中通过props和$emit实现父子组件的通信。

  • vue--三种组件中之间的传值

    一、父子组件之间的传值----props/$emit 组件之间的传值,我们比较常用到的是props/$emit 1...

  • vue组件通信

    props/$emit:(常用) 比较常见的一种。父组件通过props向子组件传递数据,子组件通过$emit向父组...

  • vue里面组件通讯

    一、父组件到子组件:通过props 二、子组件到父组件:通过$emit 三、兄弟组件通信:通过$emit和$on

  • Vue组件通讯的实现方法有哪些?

    父传子 props 子传父 $emit 非父子 varbus =newVue() // 组件A bus.$emit...

  • vue组件间通讯

    父子 $emit/on props $parent/children $attrs/listenner $ref ...

网友评论

      本文标题:props和$emit

      本文链接:https://www.haomeiwen.com/subject/cvtjgctx.html