vue2.0 に基づく element-ui フレームワークは非常に使いやすく、迅速な開発に非常に適しています。ただし、独自のプロジェクトを実行すると、さまざまな問題に遭遇することになります。一部の問題に関する公式ドキュメントはあまり詳細ではありません。以下は、element-ui の使用時に遭遇した一般的な問題または問題に関するメモです。 1. DateTimePickerの日付選択範囲は現在時刻とそれ以前です<テンプレート> <div> <el-日付ピッカー サイズ="小" クリア可能 :picker-options="ピッカーオプション" v-model="日付範囲" タイプ="日付範囲" 値の形式="yyyy-MM-dd" 範囲区切り文字="to" start-placeholder="開始日" end-placeholder="終了日"></el-date-picker> </div> </テンプレート> <スクリプト> エクスポートデフォルト{ データ () { 戻る { ピッカーオプション: { 無効日付 (時刻) { time.getTime() > Date.now() を返す } }, 日付範囲: [] } } } </スクリプト> 現在時刻以降の時間(時間、分、秒を含む)のみを選択できる場合もあります。選択した時間が現在時刻より小さい場合は、現在の時間、分、秒が自動的に入力されます。このとき、watch を使用してプロパティやイベントを監視し、処理することができます。 <テンプレート> <div> <el-date-picker size="small" clearable type="daterange" v-model="dateRange" :picker-options="ピッカーオプション" 値の形式="yyyy-MM-dd" 範囲区切り文字="to" start-placeholder="開始日" end-placeholder="終了日"></el-date-picker> </div> </テンプレート> <スクリプト> エクスポートデフォルト{ データ () { 戻る { ピッカーオプション: { 無効日付 (時刻) { time.getTime() を返す < Date.now() - 1 * 24 * 3600 * 1000 } }, 日付範囲: [] } }, 時計: dateRange (val) { //これは変更イベントに置き換えることもできます var st = new Date(val) * 1000 / 1000 st < Date.now() の場合 { this.dateRange = 新しい日付() } } } } </スクリプト> 2. DateTimePickerの日付選択範囲配列の分割プロジェクトで発生した要件: daterange 型の日付ピッカーにバインドされた値の日付は配列ですが、バックエンドが受け取る開始日と終了日のパラメータは別々であり、エコー中に返されるデータも別々です。 arrayUtil.js ファイルを作成する // 配列Util.js /** * @description 配列に対応するインデックスデータを安全に取得します* @param { Array } arr * @param { int } インデックス */ エクスポートconst saveGet = (arr, index) => { Array.isArray(arr) の場合 arr[インデックス]を返します。 } それ以外 { 未定義を返します。 } } .vue ファイルをインポートして呼び出す // .vue ファイルをインポート { saveGet } './utils/arrayUtil' から; <el-日付ピッカー タイプ="日付範囲" v-model="日付" 値の形式="yyyy-mm-dd" フォーマット="yyyy-mm-dd" start-placeholder="開始日" end-placeholder="終了日" style="width: 100%;"></el-date-picker> エクスポートデフォルト{ データ() { 戻る { date: [] // 日付範囲} }, // バックエンドに渡されるパラメータを計算する(日付範囲配列を分割) 計算: { クエリパラメータ() { 戻る { …… fromDate: saveGet(this.form.date, 0)、 toDate: saveGet(this.form,date, 1), …… }; } }, } エコーするときは、バックエンドから返された fromDate と toDate を配列に組み合わせるだけです。 3. el-selectセレクターオプションの値/ラベルがスプライスされる<el-select placeholder="選択してください" style="width:100%" filterable v-model="info" clearable > <el-オプション v-for="infoList 内の項目" :key="info.id" :label="`名前: ${item.name} - idNo: ${item.idNo}`" :value="アイテムID"> <span style="float: left">{{ item.tableName }}</span> {{ アイテム.レベル }} </el-option> </el-select> 上記の v-model="info" はバックエンドから返された選択されたユーザー ID、infoList はすべてのユーザーの情報、label はユーザー名 - ユーザー ID 番号の連結です。エコーするときは、一致させてフィルタリングし、連結して表示するだけです。 表示は次のようになります。 4. el-dialog親子コンポーネントが値を転送し、el-dialogを閉じるときにエラーが発生するel-dialogを2回目にカプセル化すると、ダイアログを閉じるときに次のエラーが発生します。 具体的なコードは次のとおりです。 // 親コンポーネント <el-button type="primary" size="mini" @click="dialogVisible=true">追加</el-button> <com-dialog :dialogVisible.sync="dialogVisible" @closeDialog="closeDialog"></com-dialog> // サブコンポーネント <テンプレート> <el-dialog title="新規" :visible.sync="dialogVisible" @close="ダイアログを閉じる"> </テンプレート> <スクリプト> エクスポートデフォルト{ 小道具: { ダイアログ表示: { タイプ: ブール値、 デフォルト: false } }, 方法:{ //ダイアログを閉じる ダイアログを閉じる(){ this.$emit('update:closeDialog', false); } }, }; </スクリプト> エラーの原因は、子コンポーネントの終了イベントが親コンポーネントの終了イベントと競合することです。子コンポーネントの props プロパティは親コンポーネントによって制御される必要があり、visible の値を直接変更することはできません。ここでの sync 修飾子は、el-dialog が親コンポーネントの値を直接変更することと同じです。したがって、親コンポーネントと子コンポーネントの .sync を削除するだけです。 もう 1 つの方法は、close メソッドを before-close に変更することです。具体的なコードは次のとおりです。 // 親コンポーネント <el-button type="primary" size="mini" @click="dialogVisible=true">追加</el-button> <com-dialog :dialogVisible.sync="dialogVisible" @closeDialog="closeDialog"></com-dialog> // サブコンポーネント <テンプレート> <el-dialog title="新規" :visible.sync="dialogVisible" :before-close="ダイアログを閉じる"> </テンプレート> <スクリプト> エクスポートデフォルト{ 小道具: { ダイアログ表示: { タイプ: ブール値、 デフォルト: false } }, 方法:{ //ダイアログを閉じる ダイアログを閉じる(){ this.$emit('closeDialog', false); } }, }; </スクリプト> 5. el-form-item ラベルのカスタマイズフォームのラベルにプロンプト テキストを追加する必要があります。具体的な表示要件は次のとおりです。 API ドキュメントでは、フォーム項目スロットにラベル属性があり、ラベル テキストの内容をカスタマイズするために使用されます。実装は次のとおりです。 <el-form-item プロパティ="名前"> <span スロット="ラベル"> ユーザー名<i>(アルファベット、数字、特殊文字がサポートされています)</i> </span> <el-input v-model="名前"></el-input> </el-form-item> 次に、スタイルに応じてフォントと色を変更します。 6. el-inputはclearableを使用してコンテンツをクリアし、検証プロンプトをトリガーします。フォームの el-input には入力検証があり、トリガー モードは blur です。clearable を使用してコンテンツをクリアすると、検証プロンプトはトリガーされません。ドキュメントには、コンテンツをクリアするときに呼び出される el-input の focus() メソッドが用意されています。フォーカスが失われると、検証がトリガーされます。具体的な実装は以下のとおりです。 <el-input placeholder="入力してください" v-model="form.name" clearable ref="nameRef" @clear="clearInput('nameRef')"></el-input> // フォームの内容をクリアするイベント clearInput (refName) { this.$refs[refName].focus() } 上記は、Vue Element UI の使用時に遭遇した問題の詳細な要約です。Vue Element UI の詳細については、123WORDPRESS.COM の他の関連記事に注目してください。 以下もご興味があるかもしれません:
|
<<: MySQLデータベースホスト127.0.0.1とlocalhostの違い
>>: Nginx はリクエスト接続を統合し、ウェブサイトのアクセス例を高速化します
数字、文字、またはランダムな色の数字と文字の混合で構成される n 桁の確認コード。以下に完全なコード...
目次1. プロセスとスレッドの概念2. ブラウザの原則3. 同期と非同期4. 実行スタックとタスクキ...
この記事では、アニメーション効果の非表示と表示を実現するためのJQueryの具体的なコードを参考まで...
以前、テーブル結合クエリを書いていたとき、whereとonの違いがわからず、SQLに小さな問題が発生...
レンダリング原理フォーム要素には、正規表現(携帯電話番号、メールアドレス、IDカードなど)をカスタマ...
ザビックス2019/10/12 チェンシン参照するhttps://www.zabbix.com/do...
この記事では、カルーセルマップの効果を実現するためのBootstrapの具体的なコードを参考までに共...
MJML は、開発者が美しく、応答性に優れ、あらゆるデバイスやメール クライアントで動作する魅力的な...
目次1. 特徴2. 例3. オプション4. 基本的な文法5. ライフサイクル6. ルーティング管理 ...
目次1. 関数デバウンス1. 画像安定化とは何ですか? 2. 関数のスロットリング2.1 タイマーの...
MySQL 5.7 を新しくインストールしました。ログインすると、パスワードが間違っているというメッ...
nohup コマンドUnix/Linux を使用する場合、通常はプログラムをバックグラウンドで実行す...
[インターネット上の移行ファイルをすべて見ると、信頼性が低く、症状のみを治療し、根本的な原因を治療し...
sudo 権限委譲の概要su スイッチ ID: su –l ユーザー名 –c 'コマンド...
序文MySQL 8.0 の最新バージョンは 8.0.4 rc であり、正式版は近日中にリリースされる...