この記事では、vuejs2.0 でイベント監視データ送信に $emit を使用してページングコンポーネントを実装する方法を主に紹介します。非常に優れており、必要な友人は参考にしてください。
前回の記事では、 の実装を紹介しました。 vuejs シンプルなページング。ページング効果が必要なページが複数ある場合、このコードをすべてのページにコピーすることは不可能です。つまり、コードをカプセル化してユニバーサル コンポーネントに変えることになります。
まず、基本的な Vue コンストラクターを使用して、「サブクラス」Vue.extend( options ) を作成します
var barHtml = '<p class="page-bar">'+ '<ul>'+ '<li v-if="cur>1"><a v-on:click="cur--,pageClick()">上一页</a></li>'+ '<li v-if="cur==1"><a class="banclick">上一页</a></li>'+ '<li v-for="index in indexs" v-bind:class="{ active: cur == index}">'+ '<a v-on:click="btnclick(index)">{{ index }}</a>'+ '</li>'+ '<li v-if="cur!=all"><a v-on:click="cur++,pageClick()">下一页</a></li>'+ '<li v-if="cur == all"><a class="banclick">下一页</a></li>'+ '<li><a>共<i>{{all}}</i>页</a></li>'+ '</ul>'+ '</p>'; var navBar = Vue.extend({ template:barHtml, props:['all','cur'], computed: { indexs: function(){ var left = 1; var right = this.all; var ar = []; if(this.all>= 5){ if(this.cur > 3 && this.cur < this.all-2){ left = this.cur - 2 right = this.cur + 2 }else{ if(this.cur<=3){ left = 1 right = 5 }else{ right = this.all left = this.all -4 } } } while (left <= right){ ar.push(left) left ++ } return ar } }, methods: { btnclick: function(data){ if(data != this.cur){ this.cur = data; this.$emit('btn-click',data); } }, pageClick: function(){ this.$emit('btn-click',this.cur); } }, }); window.pagenav = navBar;
ここでグローバル pagenav が作成され、他の場所から呼び出すことができます。
html コード
<p id="page"> <vue-nav :cur.sync="cur" :all.sync="all" v-on:btn-click="listenDate"></vue-nav> <p style="margin-left:40px;">{{msg}}</p> </p>
css コード
.page-bar{ margin:40px; } ul,li{ margin: 0px; padding: 0px; } li{ list-style: none } .page-bar ul{ overflow: hidden; } .page-bar li{ float: left; } .page-bar li:first-child>a { margin-left: 0px } .page-bar a{ display: block; border: 1px solid #ddd; text-decoration: none; position: relative; padding: 6px 12px; margin-left: -1px; line-height: 1.42857143; color: #337ab7; cursor: pointer } .page-bar a:hover{ background-color: #eee; } .page-bar a.banclick{ cursor:not-allowed; } .page-bar .active a{ color: #fff; cursor: default; background-color: #337ab7; border-color: #337ab7; } .page-bar i{ font-style:normal; color: #d44950; margin: 0px 4px; font-size: 12px; }
新しい vue オブジェクト インスタンスを作成します
var pageBar = new Vue({ el: '#page', data: { all: 8, //总页数 cur: 1,//当前页码 msg:'' }, components:{ 'vue-nav':pagenav }, watch: { cur: function(oldValue , newValue){ console.log('监听cur前与后的值:'); console.log(arguments); } }, methods:{ listenDate:function(data){ this.cur = data; this.msg = '你点击了'+data+ '页'; } } })
js を使用してページング コンポーネントをカプセル化するだけです。
実績効果
<p id="page"> <vue-nav :cur.sync="cur" :all.sync="all" v-on:btn-click="listenDate"></vue-nav> <p style="margin-left:40px;">{{msg}}</p> </p>
上記は、イベント監視データ送信に $emit を使用するためにエディターが導入した vuejs2.0 ページング コンポーネントです。ご質問 ご質問がございましたら、メッセージを残してください。すぐに返信させていただきます。また、PHP 中国語 Web サイトをサポートしていただきありがとうございます。
イベント監視とデータ転送に $emit を使用してページング コンポーネントを実装する vuejs2.0 に関するその他の関連記事については、PHP 中国語 Web サイトに注目してください。