ホームページ >ウェブフロントエンド >jsチュートリアル >Vue にモバイル確認コード コンポーネントを追加する方法
コンポーネントは、Vue.js の最も強力な機能の 1 つです。コンポーネントは HTML 要素を拡張し、再利用可能なコードをカプセル化できます。この記事では、VUE に追加された携帯電話認証コード コンポーネントを主に紹介します。必要な方は、
コンポーネントとは:
コンポーネントは、Vue.js の最も強力な機能の 1 つです。コンポーネントは HTML 要素を拡張し、再利用可能なコードをカプセル化できます。大まかに言うと、コンポーネントは、Vue.js のコンパイラーが特別な機能を追加するカスタム要素です。場合によっては、コンポーネントは、 is 属性で拡張されたネイティブ HTML 要素の形式にすることもできます。
前に書いてあります:
今日実装する機能は、個人情報ページ (vue) に携帯電話認証コード コンポーネントを追加することです。ユーザーが携帯電話オプションをクリックすると、認証コード コンポーネントがポップアップします。携帯電話認証の機能を完成させるまで:
関数の再利用を考慮して、携帯電話認証コードをポップアップする現在の操作を別のコンポーネントに置きます:
<template > <p> <p class="bind-phone-box"> <p class="phone-title">绑定手机</p> <p class="phone-content" v-on:click.stop="fillContent"> <input v-model="phoneNum" class="phone-num" type="text" placeholder="请输入手机号码"> <p class="verify-box clearfix"> <input class="verify-num" v-model="verifyNum" type="text" placeholder="请输入验证码"><input v-on:click="sendSmsCode" class="verify-btn" type="button" v-model="btnContent" v-bind="{'disabled':disabled}"> </p> </p> <p class="phone-submit clearfix"> <input class="submit-cancel" type="button" value="取消"> <input class="submit-confirm" v-on:click.stop="verificationCode" type="button" value="确定"> </p> </p> </p> </template>
バインドされた携帯電話コンポーネントの表示と非表示を制御する場合、小さな問題が発生することに注意してください。「携帯電話」ボタンをクリックすると現在のコンポーネントを表示する必要がありますが、いつ表示する必要があるかということです。現在のコンポーネントを非表示にするには、次のように考えます。
状況 1: ユーザーが「OK」ボタンをクリックすると、現在のコンポーネントを非表示にする必要があります。ユーザーが携帯電話認証を完了していないが、続行したくないため、現在の携帯電話の任意の場所をクリックします (「OK」ボタン、携帯電話番号入力ボックス、確認コード入力ボックスを除く)。 現在のコンポーネントは非表示にする必要があります。 ;
これらの 2 つの状況に基づいて、親コンポーネントの子コンポーネントにコンテナを追加しました。
<li class="mui-table-view-cell phone-li"> <span v-on:click="verifyPhone" class="mui-navigate-right"><span>手机号<span class="necessary">*</span></span></span> <!-- 手机验证码 --> <p class="shade" v-show="verifyShow" v-on:click="verifyPhone"> <!-- 手机验证码子组件 --> <phoneVerify></phoneVerify> </p> </li>
親コンポーネントの表示ステータスを使用して、サブコンポーネントの表示ステータスを制御します。検証コンポーネントの
methods:{ // 手机号验证 verifyPhone(){ this.verifyShow=!this.verifyShow; }, },
の部分は以下の通りです:
<script> // 引入弹窗组件 import { Toast } from 'mint-ui'; export default { data(){ return { phoneNum:"", //手机号 verifyNum:"", //验证码 btnContent:"获取验证码", //获取验证码按钮内文字 time:0, //发送验证码间隔时间 disabled:false //按钮状态 } }, created(){ }, methods:{ // 获取验证码 sendSmsCode(){ var reg=11&& /^((13|14|15|17|18)[0-9]{1}\d{8})$/;//手机号正则验证 var phoneNum = this.phoneNum; if(!phoneNum){//未输入手机号 Toast("请输入手机号码"); return; } if(!reg.test(phoneNum)){//手机号不合法 Toast("您输入的手机号码不合法,请重新输入"); } this.time = 60; this.timer(); // 获取验证码请求 var url = 'http://bosstan.asuscomm.com/api/common/sendSmsCode'; this.$http.post(url,{username:phoneNum},{emulateJSON:true}).then((response)=>{ console.log(response.body); }); }, timer(){ if(this.time>0){ this.time--; this.btnContent = this.time+"s后重新获取"; this.disabled = true; var timer = setTimeout(this.timer,1000); }else if(this.time == 0){ this.btnContent = "获取验证码"; clearTimeout(timer); this.disabled = false; } }, // 验证验证码 verificationCode(){ var phoneNum = this.phoneNum;//手机号 var verifyNum = this.verifyNum;//验证码 var url = 'http://bosstan.asuscomm.com/api/common/verificationCode'; this.$http.post(url,{ username:phoneNum, code:verifyNum },{ emulateJSON:true }).then((response)=>{ console.log(response.body); }); }, fillContent(){ // console.log("fillContent"); } } } </script>
このうち、検証コードの取得と SMS 検証コードの検証のロジックはまだ書かれていません。
PS: vue SMS 確認コード コンポーネントのサンプル コードは次のとおりです: Vue.component('timerBtn',{
template: '<button v-on:click="run" :disabled="disabled || time > 0">{{ text }}</button>',
props: {
second: {
type: Number,
default: 60
},
disabled: {
type: Boolean,
default: false
}
},
data:function () {
return {
time: 0
}
},
methods: {
run: function () {
this.$emit('run');
},
start: function(){
this.time = this.second;
this.timer();
},
stop: function(){
this.time = 0;
this.disabled = false;
},
setDisabled: function(val){
this.disabled = val;
},
timer: function () {
if (this.time > 0) {
this.time--;
setTimeout(this.timer, 1000);
}else{
this.disabled = false;
}
}
},
computed: {
text: function () {
return this.time > 0 ? this.time + 's 后重获取' : '获取验证码';
}
}
});
<timer-btn ref="timerbtn" class="btn btn-default" v-on:run="sendCode" ></timer-btn>
var vm = new Vue({
el:'#app',
methods:{
sendCode:function(){
vm.$refs.timerbtn.setDisabled(true); //设置按钮不可用
hz.ajaxRequest("sys/sendCode?_"+$.now(),function(data){
if(data.status){
vm.$refs.timerbtn.start(); //启动倒计时
}else{
vm.$refs.timerbtn.stop(); //停止倒计时
}
});
},
}
});
上記は私があなたのためにコンパイルしたものです。将来役立つことを願っています。
関連記事:
Vue のレスポンシブ原則について (詳細なチュートリアル) angularjs で棒グラフの動的読み込みを実装する方法 Angular スコープでスコープを使用する方法以上がVue にモバイル確認コード コンポーネントを追加する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。