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 つのツール
目次マップ状態マップゲッターマップミューテーションマップアクション複数のモジュールマップ状態 ...
序文:前回の記事では、注意深い学生であれば発見できたかもしれない DDL ステートメントの使用法を中...
達成される効果は次のとおりです。 マウスがボタン内に移動すると、ネオンライトのような効果が生成され、...
数字、文字、またはランダムな色の数字と文字の混合で構成される n 桁の確認コード。以下に完全なコード...
この記事では、参考までに、計算機のWebバージョンを実装するためのJavaScriptの具体的なコー...
目次1. キャラクター機能1. ケースコントロール機能2. キャラクターコントロール機能2. 数学関...
ギリシャ文字は、特に数学や物理学などの科学技術分野で非常によく使用される記号列であり、特定の意味を持...
<br />国内のウェブサイトが本格的に普及し、ユーザーエクスペリエンスに重点が置かれる...
<br />百度百科事典の正式版がついにオンラインになりました。2年間の「テスト版」の帽...
目次1. 需要1. 需要2. SDKパラメータ設定1. ディレクトリ構造3. コードの実装1. バッ...
デプロイされるプロジェクトが増えるにつれて、Tomcat にデプロイされるリリース パッケージも増え...
出典: www.bamagazine.comウェブページのバナー、ニュースの見出しの周りのスペース、...
一般的に、テーブルを使用する場合は、常に <table border="1"...
1. ネイティブネットワークリクエスト1. XMLHttpRequest (W3C 標準) // 約...
MySQL エスケープエスケープとは、エスケープ文字の本来の意味を意味します。エスケープ文字の目的は...