首頁 > web前端 > js教程 > vue開發按鈕元件需要準備哪些東西

vue開發按鈕元件需要準備哪些東西

php中世界最好的语言
發布: 2018-05-03 10:31:11
原創
1197 人瀏覽過

這次帶給大家vue開發按鈕元件需要準備哪些東西,vue開發按鈕元件的注意事項有哪些,下面就是實戰案例,一起來看一下。

最近面試,被問到一個題目,vue做一個按鈕元件;

當時只是說了一下思路,回來就附上程式碼。

解決想法:

  1. 透過父子元件通訊($refs 和props)

  2. props接受參數, $refs調用子元件的方法

  3. 來達到點擊提交改變按鈕狀態,如果不成功則取消按鈕狀態

在src/components/ 下建一個button.vue

<template>
<!-- use plane -->
<!-- 传入bgColor改变按钮背景色 -->
<!-- state切换button的状态 调用cancel()可以切换 -->
<!-- text为按钮文字 -->
 <p class="container">
  <button 
   @click="confirm"
   :disabled="state" 
   class="confirm" 
   :style="{background: btnData.bgColor}"
  >{{text}}</button>
 </p>
</template>
<script>
export default {
 data(){
  return {
   text: this.btnData.text,
   state: false,
  }
 },
 props: {
  btnData: {
   types: Array,
   default() {
    return {
     text: '确认',
    }
   }
  }
 },
 methods: {
  confirm(){
   this.text += '...'
   this.state = true
   //这里是激活父组件的事件,因为子组件是不会冒泡到父组件上的,必须手动调用$emit
   //相对应父组件要在调用该组件的时候,将其挂载到上面
   this.$emit("confirm")
  },
  cancel(){
   this.text = this.btnData.text
   this.state = false
  }
 }
}
</script>
<style lang="less" scoped>
.confirm {
 border: none;
 color: #fff;
 width: 100%;
 padding: 1rem 0;
 border-radius: 4px;
 font-size: 1.6rem;
 background: #5da1fd;
 &:focus {
  outline: none;
 }
}
</style>
登入後複製

在頁面中呼叫:

<template>
  <p class="btn-box">
   <Btn 
    :btnData="{text: &#39;确认注册&#39;}"
    <!--这里就要挂载$emit调用的事件 @confirm="想要调用事件的名字"-->
    @confirm="confirm"
    ref="btn"
   ></Btn>
  </p> 
</template>
<script>
import Btn from '@/components/button'
export default {
 components: {
  Btn
 },
 methods: {
  confirm(){
   if(!this.companyName){
    this.$toast("公司名不能为空") 
    this.$refs.btn.cancel()
   }
 }
}
</script>
登入後複製

在這裡,要注意一些細節:

1. button元件形成之後和其它p元素的間距,如果是在組件內定死是很難重複使用的。

2. 在復用的時候,在父元件中是改變不了子元件的樣式的,如果要強制更改,單獨寫一個並去掉scoped。

相信看了本文案例你已經掌握了方法,更多精彩請關注php中文網其它相關文章!

推薦閱讀:

JS左邊列表轉移右邊

#微信小程式分享頁面後跳轉回首頁

以上是vue開發按鈕元件需要準備哪些東西的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
最新問題
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板