el-dialogをコンポーネントとしてカプセル化するelement-ui を使用する場合、ポップアップ ウィンドウに多くのコンテンツが含まれている場合は、次のようにポップアップ ウィンドウをコンポーネントにカプセル化することがよくあります。 <!-- 詳細ダイアログ.vue html --> <テンプレート> <el-dialog title="タイトル" :visible.sync="表示" width="720px" > <p>ポップアップコンテンツ</p> </el-ダイアログ> </テンプレート> // 詳細ダイアログ.vue.js <スクリプト> 小道具: { 見える: タイプ: ブール値、 デフォルト: false } } </スクリプト> el-dialogはプロパティを変更し、エラーを報告しますしかし、問題があります。ポップアップシャドウをクリックするなど、el-dialog 内の終了イベントがトリガーされると、現在のコンポーネントの props [visible] を変更するイベントが発行されます。コンポーネントは prop 属性を直接変更できないため、エラーが報告されます。 props [visible]の変更と取得をインターセプトするための中間変数innerVisibleを追加しました。 <!-- 詳細ダイアログ.vue html --> <テンプレート> <el-dialog title="タイトル" :visible.sync="innerVisible" width="720px" > <p>ポップアップコンテンツ</p> </el-ダイアログ> </テンプレート> // 詳細ダイアログ.vue.js <スクリプト> エクスポートデフォルト{ 小道具: { 見える: タイプ: ブール値、 デフォルト: false } }, 計算: { 内部表示: { 取得: 関数() { this.visible を返す }, 設定: 関数(val) { this.$emit('update:visible', val) } } } } </スクリプト> このように、el-dialog内でprop[visible]を変更する場合、propsを直接変更しないように、emit('update:')を介して親コンポーネントに通知します。もちろん、親コンポーネントは変更を受け入れるために sync 修飾子を追加する必要があります。 <!-- father.vue html --> <詳細ダイアログ:visible.sync="詳細表示" /> これまでのところ、カプセル化されたポップアップ コンポーネントに問題はありません。 引き続き最適化し、v-modelを使用して表示と非表示を制御します。// 詳細ダイアログ.vue.js <スクリプト> エクスポートデフォルト{ モデル: { prop: 'visible', // v-model にバインドされた props 名を変更します event: 'toggle' // v-model にバインドされたカスタム イベント名を変更します }, 小道具: { 見える: タイプ: ブール値、 デフォルト: false } }, 計算: { 内部表示: { 取得: 関数() { this.visible を返す }, 設定: 関数(val) { this.$emit('update:toggle', val) } } } } </スクリプト> v-model に接続すると、よりエレガントですっきりとした使用感になります。 <!-- father.vue html --> <詳細ダイアログ v-model="詳細表示可能" /> 最適化とミックスインへのカプセル化を継続ポップアップコンポーネントが頻繁にカプセル化される場合、上記のロジックも常にコピーされる必要があるため、上記のコントロールの表示と非表示のロジックをmxinに最適化してカプセル化し、直接再利用できるようにします。 // vModelDialog.js エクスポートデフォルト{ モデル: { プロパティ: '表示'、 イベント: 'トグル' }, 小道具: { 見える: タイプ: ブール値、 デフォルト: () => { 偽を返す } } }, 計算: { 内部表示: { 取得: 関数() { this.visible を返す }, 設定: 関数(val) { this.$emit('toggle', val) } } } } 次に、ポップアップ プラグインをカプセル化するときに、表示と非表示のロジックを完了するためにミックスインを導入するだけで済みます。 // 詳細ダイアログ.vue js <スクリプト> './vModelDialog.js' から vModelDialog をインポートします。 エクスポートデフォルト{ ミックスイン: [vModelDialog], } </スクリプト> 上記は、element-ui ポップアップ コンポーネントのパッケージ化手順の詳細な内容です。element-ui ポップアップ コンポーネントのパッケージ化の詳細については、123WORDPRESS.COM の他の関連記事に注目してください。 以下もご興味があるかもしれません:
|
<<: Mysql5.7.14 インストールと設定方法操作グラフィックチュートリアル(パスワード問題解決)
>>: Linux コマンドラインターミナルで画面を分割するための 2 つのツール
ステップ1: ローカルイーサネットプロパティをチェックして、VMwareブリッジプロトコルがインスト...
今日、プログラムが間違った時刻を挿入し、フィールドがデフォルト値 CURRENT_TIMESTAMP...
目次スイッチも複雑なコードブロックもありませんPythonからのインスピレーション辞書を使用してスイ...
<br />多くの中小企業ではこの問題は発生しません。中小企業はデザイナーをサポートし、...
目次1. Vue2 構文2. Vue3の使用1. コンポーネントのref値を設定する2. コンポーネ...
この記事では、MySQL のマルチテーブル共同クエリ操作について説明します。ご参考までに、詳細は以下...
目次一般的な圧縮形式: gz .bz2 .xz .zip一般的に使用されるアーカイブは圧縮を必要とす...
初心者は、いくつかの HTML タグを理解することで HTML を学習できます。この入門書は、初心者...
1. dhtmlxツリー dHTMLxTree は機能豊富なツリー メニュー コントロールです。豊...
elementUI が提供する el-select コンポーネントのスタイルを変更する方法この問題...
優先度両方のケースで同じ条件を設定すると、異なる結果セットが生成される可能性があるのは、優先順位のた...
環境名前財産CPU 5650 円メモリ4Gディスク20G+4TB この時点で、サーバーにはすでに次の...
目次背景メインコンテンツ1. コンポーネントの比較2. 実装のアイデア3. キーメソッドソースコード...
目次1. 遭遇した問題2. アイデア3. コード1. 遭遇した問題私たちは皆、mysqldump を...
1. getBoundingClientRect() 分析getBoundingClientRect...