第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

VueJS 組件顯示其他組件內(nèi)容

VueJS 組件顯示其他組件內(nèi)容

慕斯709654 2022-09-11 20:13:21
目標(biāo):Vue 組件輸入地址必須位于 Vue 組件郵件編輯器中,并且僅當(dāng)有人單擊“地址簿”按鈕時才顯示地址列表。當(dāng)有人單擊其中一個顯示的郵件或手動填寫“收件人”字段時,createdmail.to 必須獲取該值,并且必須隱藏地址列表。Vue 組件郵件編輯器。此組件接收地址列表。(一切都在這里工作,我認(rèn)為唯一不能正常工作的部分是輸入地址標(biāo)簽內(nèi)的v模型)Vue.component('mail-composer', {    props: ['addressesbook'],    methods: {      send: function(createmail) {        this.$emit('send', createmail);      }    },            template:            `            <div>              <input-address :addresses="addressesbook" v-model="createmail.to"></input-address>              <p><b>Subject: </b><input type="text" v-model="createmail.subject"></input></p>              <p><b>Body: </b><textarea v-model="createmail.body"></textarea></p>              <button @click="send(createmail)">Send</button>            </div>            `,            data(){              return{                createmail:{                  to: '',                  subject: '',                  body: ''                }              }            }      });另一個 Vue 組件是這個組件,它位于同一個文件中。(我認(rèn)為所有問題都在這里)。只有當(dāng)有人單擊“地址簿”按鈕時,我才需要顯示地址列表,并且當(dāng)有人再次單擊按鈕或列表中的其中一封電子郵件時,我必須將其隱藏。當(dāng)有人從列表中單擊郵件時,郵件編輯器中的 createmail.to 屬性必須獲取郵件的值,如果我決定手動放置郵件,則必須發(fā)生相同的情況。Vue.component('input-address',{        props:["addresses"],        template:        `          <div>          <label><b>To: </b><input type="text"></input><button @click="!(displayAddressBook)">Address Book</button></label>          <ul v-if="displayAddressBook">            <li  v-for="address in addresses">            {{address}}            </li>          </ul>          </div>        `,        data(){          return{            displayAddressBook: false          }        }      })
查看完整描述

1 回答

?
當(dāng)年話下

TA貢獻(xiàn)1890條經(jīng)驗 獲得超9個贊

代碼中存在一些錯誤:

  • @click="!(displayAddressBook)"應(yīng)該是 - 第一個真的什么都不做(有趣),第二個(建議)將的值設(shè)置為當(dāng)前具有的相反值。@click="displayAddressBook = !displayAddressBook"displayAddressBook

  • 輸入地址組件實際上不會對輸入字段執(zhí)行任何操作(缺少v-model)

  • 子組件 () 中的更改不會發(fā)送回父組件(在子組件中添加了一個 er 來執(zhí)行此操作)input-addresswatch

  • 父組件 () 必須處理從子組件發(fā)出的值(添加了操作處理程序)mail-composer@address-change

  • 組件中沒有集。通過使用索引來添加(不是最佳解決方案,但很容易做到)。v-forinput-addresskeykey

  • 只是放在的末尾,所以你可以看到它是如何變化的createmail.to: {{ createmail.to }}MailComposer

建議

  • 始終使用CamelCase作為組件名稱 - 如果您習(xí)慣了它,那么您將獲得更少的“為什么它不起作用?!”

  • 注意拼寫錯誤:看起來不好 - 或者只是會更好(好吧,它看起來不那么好 - 也許你應(yīng)該選擇一個完全不同的名稱)createmailcreateEmailcreateemail

Vue.component('InputAddress', {

  props: ["addresses"],

  data() {

    return {

      displayAddressBook: false,

      address: null

    }

  },

  template: `

          <div>

          <label><b>To: </b>

            <input

              type="text"

              v-model="address"

            />

            <button

              @click="displayAddressBook = !displayAddressBook"

            >

              Address Book

            </button>

          </label>

          <ul v-if="displayAddressBook">

            <li

              v-for="(address, i) in addresses"

              :key="i"

              @click="clickAddressHandler(address)"

             >

              {{address}}

            </li>

          </ul>

          </div>

        `,

  watch: {

    address(newVal) {

      // emitting value to parent on change of the address

      // data attribute

      this.$emit('address-change', newVal)

    }

  },

  methods: {

    clickAddressHandler(address) {

      // handling click on an address in the address book

      this.address = address

      this.displayAddressBook = false

    }

  }

})


Vue.component('MailComposer', {

  props: ['addressesbook'],

  data() {

    return {

      createmail: {

        to: '',

        subject: '',

        body: ''

      }

    }

  },

  methods: {

    send: function(createmail) {

      this.$emit('send', createmail);

    },

    addressChangeHandler(value) {

      this.createmail.to = value

    }

  },

  template: `

            <div>

              <input-address

                :addresses="addressesbook"

                v-model="createmail.to"

                @address-change="addressChangeHandler"

              />

              <p>

                <b>Subject: </b>

                <input

                  type="text"

                  v-model="createmail.subject"

                />

              </p>

              <p>

                <b>Body: </b>

                <textarea v-model="createmail.body"></textarea>

              </p>

              <button @click="send(createmail)">Send</button><br />

              createmail.to: {{ createmail.to }}

            </div>

            `

});


new Vue({

  el: "#app",

  data: {

    addressesbook: [

      'abcd@abcd.com',

      'fghi@fghi.com'

    ]

  }

})

<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.17/vue.js"></script>

<div id="app">

  <mail-composer :addressesbook="addressesbook" />

</div>


查看完整回答
反對 回復(fù) 2022-09-11
  • 1 回答
  • 0 關(guān)注
  • 230 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號