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 つのツール
MySQL クエリ結果の行フィールドの結合は、次の 2 つの関数を使用して実装できます。 1. co...
現在のデータベースでサポートされているエンジンを表示します エンジンを表示 +-----------...
たとえば、新しいテーブルを作成したり、既存のテーブルのデータを更新したりすると、これらのイベントは、...
1. ダウンロード、例として8.0を取り上げますダウンロードアドレス: https://dev.my...
1. 問題Windows 上の Eclipse を使用して開発されたプロジェクトは Windows ...
最近、カンファレンスの健康申告システムに取り組んでいたとき、バックエンドを構築する必要があり、vue...
この記事では、ローカル マシンに Java 8 をインストールせずに、Java 8 を使用して簡単な...
目次1. プロジェクトフォルダ構造1. アセットフォルダ2. 図書館3. ローカル設定(ローカル) ...
目次分散IDソリューションの概要データベース自動増分IDデータベースマルチマスターモード数値セグメン...
この記事では、Linux 環境で crontab コマンドを使用して、タスクの定期的な実行をスケジュ...
この記事では、Vueでアップロードされた画像に透かしを追加する具体的な実装コードを参考までに共有しま...
序文:非常に遅いクエリとリクエストのタイムアウトのアラートを受け取りました。メトリックを通じて My...
仮想DOMの役割まず、仮想 DOM の出現によってどのような問題が解決されるのかを知る必要があります...
目次1. 制約の概念と分類2. 5つの制約の追加と削除2.1 制約を追加する6つの方法2.2 制約を...
入力ボックスが小さい場合、内容を入力した後に、入力内容が拡大されたプロンプト ボックスを表示したいこ...