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. JavaScriptの問題2. TypeScriptの利点3. TypeScriptの欠点...
目次1. 検索バーの内容をカスタマイズする2. 検索ボタンをカスタマイズする検索バーをカスタマイズし...
一般的な携帯電話のスタイル: @media all および (orientation : 縦向き) ...
目次ネットワーク情報ホスト名を変更するDNSドメイン名解決ネットワーク関連コマンドファイアウォール暗...
ページデータの表示には Vue などの js のデータバインディング機構が使用されるため、クローラー...
メタタグは、HTML言語のヘッド領域にある補助タグです。HTML文書のヘッダーにあるヘッドタグとタイ...
目次一般的な配列メソッドポップ()シフト解除()シフト()スライス()スプライス()配列から重複した...
この記事では、Linuxサーバー上でDockerを使用してNexusプライベートサーバーを構築する方...
序文まずここで説明させてください。インターネット上では、Alibaba では 500 万のデータを異...
マイグレーションアドバンテージ:小型、高速、総所有コストが低い、オープンソース。複数のオペレーティン...
目次1. 監視Linuxホストを追加する2. メールボックスを設定する1. 監視Linuxホストを追...
最近、プロジェクトでは kubernetes (以下、k8s と表記、k と s の間には 8 つの...
概要実際のビジネス シナリオ アプリケーションでは、ビジネス条件に基づいて対象データを取得およびフィ...
最初のステップは、圧縮されたパッケージを対応するディスクに解凍することです。 2 番目の手順は、cm...
Docker の人気と成熟に伴い、Docker は徐々にプロジェクトをデプロイするための第一の選択肢...