Vue.js 命令を使用してすべて選択機能を実装する方法
この記事では主に、Vue.js コマンドを使用して select-all 関数を実装する方法を紹介します。これを必要な友人に共有します。
Vue プロジェクトでは、どちらも全選択と選択の反転の機能を実現するために、2 つの実装方法を使用する必要があります。最初のプロジェクトは vue の計算を使用し、2 番目のプロジェクトは命令を使用して実装したことがわかりました。指示の方が便利です。次に、全選択命令の使い方を紹介します。
vueを使い始めたばかりなので、完全選択の実装はZhihuでの実装方法を参考にします:
1. サーバーからデータを取得し、各項目にchecked属性を設定します
2. 選択された値を計算します数値 selectCount 、選択された項目の数が selectItem の数と等しい場合、すべて選択します
selectItems の属性が変更されると、true にチェックされた項目が配列 checkGroups に入れられます。 以下は実装コードです。 :
//全选 data: function() { return { selectItems: [], // 从服务器拿到的数据 } }, computed: { // 全选checkbox绑定的model selectAll: { get: function() { return this.selectCount == this.selectItems.length; }, set: function(value) { this.selectItems.forEach(function(item) { item.checked = value; }); return value; } }, //选中的数量 selectCount: { get: function() { var i = 0; this.selectItems.forEach(function(item) { if (item.checked) { i++; } }); return i; } }, //选中的数组 checkedGroups: { get: function() { var checkedGroups = []; this.selectItems.forEach(function(item) { if (item.checked) { checkedGroups.push(item); } }); return checkedGroups; } } }
このメソッドは使いにくいです。まず、これを使用する場合、毎回計算を行う必要があります。 selectedGroups と selectItems はすべて固定されており、あまり柔軟性がありません。
そこで、このプロジェクトでは、vue 命令を使用してすべてを選択する関数を再実装しました。最初に、ディレクティブの考え方は computed と似ています。
export default { 'check-all': { twoWay: true, params: ['checkData'], bind() { /** - 如果所有的列表的checked属性都为true,则选中全选框,否则不选中全选框 */ this.vm.$watch(this.params.checkData, (checkData) => { if (checkData.every((item) => item.checked)) { this.set(true); } else { this.set(false); } }, { deep: true }); }, // checkAll发生更改时 update(checkAll) { /** - 如果全选框被选中,则将列表的所有checked属性转为true,否则转为false */ if (checkAll) { this.vm[this.params.checkData].forEach((item) => { item.checked = true; }); } else { this.vm[this.params.checkData].forEach((item) => { item.checked = false; }); } }, }, };
まず、この方法で使用する利点について説明します。
1. 必要に応じて、v-check-all
を記述すると便利です。コマンドと check-data</ code> を実行します<strong></strong></p> 2. 完全に選択されたモデルを checkAll という名前にしたくない場合は、任意の名前を使用できます。配列を checkData という名前にしたくない場合は、dataFromServer という名前にすることができます。 <p class="jb51code"></p> コマンドでは、twoWay を true として指定し、<code>this.set(value)
を使用して checkAll の値を設定し、params を使用してバインディング コマンド要素の属性値 checkData を受け取ることができます。演算配列が必要です。
this.vm
を使用して命令を使用するコンテキストを取得し、コンテキストの $watch
を呼び出して checkData の変更を監視します。すべての checkData が選択されている場合は、checkAll を に設定します。 true、それ以外の場合は、checkAll が false に設定されます。 命令値(checkAll)が変更された場合、trueであればcheckDataのchecked属性をtrueに設定し、それ以外の場合はfalseとなります。この時点で、全選択コマンドが完了します。
この全選択コマンドを実行するとき、当初は paramWatchers を使用して checkData の変更を監視したかったのですが、checkData が変更されたときに paramWatchers のコールバックがトリガーされないことがわかりました。実際には< code>$watch と呼ばれますが、詳細な検出はサポートされていません:
v-check-all
指令和check-data
就可以
2、全选的model和数组名可以定制,用什么名字都可以,全选的model不想叫checkAll叫checkAllData也可以,数组不想叫checkData叫dataFromServer也可以。
在指令中,指定twoWay为true,就可以用this.set(value)
来设置checkAll的值,用params接收绑定指令元素上的属性值checkData,也就是需要操作的数组。
用this.vm
获取使用指令的上下文,调用上下文的$watch
来监听checkData的变化,如果checkData全部选中,则设置checkAll为true,否则设置checkAll为false。
当指令值(checkAll)发生变化,如果为true,则将checkData的checked属性都设为true,否则为false。至此,一个全选的指令就完成了。
在做这个全选指令的时候,本来想用paramWatchers来监听checkData的变化的,但是发觉checkData变动时,并不会触发paramWatchers的回调,后来看了一下源码才发现,paramWatchers其实也是调用了$watch
<input type="checkbox" v-model="checkAll" v-check-all="checkAll" check-data="checkData"> <ul> <li v-for="item in checkData"> <input type="checkbox" v-model="item.checked"> {{item.text}} </li> </ul>
vueルーティングの使用分析について
vue-routerを使用して簡単なナビゲーション機能を完成させます
以上がVue.js 命令を使用してすべて選択機能を実装する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









vue.jsでJSファイルを参照するには3つの方法があります。タグ;; mounted()ライフサイクルフックを使用した動的インポート。 Vuex State Management Libraryを介してインポートします。

Vue.jsの監視オプションにより、開発者は特定のデータの変更をリッスンできます。データが変更されたら、Watchはコールバック関数をトリガーして更新ビューまたはその他のタスクを実行します。その構成オプションには、すぐにコールバックを実行するかどうかを指定する即時と、オブジェクトまたは配列の変更を再帰的に聴くかどうかを指定するDEEPが含まれます。

vue.jsでBootstrapを使用すると、5つのステップに分かれています。ブートストラップをインストールします。 main.jsにブートストラップをインポートしますブートストラップコンポーネントをテンプレートで直接使用します。オプション:カスタムスタイル。オプション:プラグインを使用します。

Vue.jsでは、Lazy Loadingを使用すると、コンポーネントまたはリソースを必要に応じて動的にロードすることができ、初期ページの読み込み時間を短縮し、パフォーマンスを改善できます。特定の実装方法には、&lt; Keep-Alive&gt;および&lt;コンポーネントは&gt;コンポーネント。怠zyなロードは、FOUC(スプラッシュ画面)の問題を引き起こす可能性があり、不必要なパフォーマンスのオーバーヘッドを避けるために怠zyなロードが必要なコンポーネントにのみ使用する必要があることに注意してください。

CSSアニメーションまたはサードパーティライブラリを使用して、VUEでマーキー/テキストスクロール効果を実装します。この記事では、CSSアニメーションの使用方法を紹介します。スクロールテキストを作成し、テキストを&lt; div&gt;をラップします。 CSSアニメーションを定義し、オーバーフローを設定します:非表示、幅、アニメーション。キーフレームを定義し、アニメーションの開始と終了時にtranslatex()を設定します。期間、スクロール速度、方向などのアニメーションプロパティを調整します。

HTMLテンプレートのボタンをメソッドにバインドすることにより、VUEボタンに関数を追加できます。 VUEインスタンスでメソッドを定義し、関数ロジックを書き込みます。

Vue Devtoolsを使用してブラウザのコンソールでVueタブを表示することにより、Vueバージョンを照会できます。 NPMを使用して、「NPM List -G Vue」コマンドを実行します。 package.jsonファイルの「依存関係」オブジェクトでVueアイテムを見つけます。 Vue CLIプロジェクトの場合、「Vue -Version」コマンドを実行します。 &lt; script&gt;でバージョン情報を確認してくださいVueファイルを参照するHTMLファイルにタグを付けます。

vue.jsには、前のページに戻る4つの方法があります。$ router.go(-1)$ router.back()outes&lt; router-link to =&quot;/&quot; Component Window.history.back()、およびメソッド選択はシーンに依存します。
