このようなタグはどのように記述すればよいでしょうか?アイデアを要約すると次のようになります。 1. ページレンダリングページ 1 は、配列をループすることでストアに配列を格納できることを示しています。 (1) 格納する前に、重複したデータがあるかどうかを判断します。重複したデータがある場合は、最初に削除してから追加します。 addTag: (状態、タグ) => { const { fullPath, path, meta, query } = タグ if (tag.path === '/login') { 偽を返す } const findIndex = state.tags.findIndex(item => item.path === tag.path) console.log(インデックスを検索) (検索インデックス >= 0)の場合{ state.tags.splice(findIndex, 1, { fullPath, パス, メタ, クエリ }) } それ以外 { state.tags.push({ fullPath, パス, メタ, クエリ }) } }, 2 このルート追加メソッドがトリガーされ、リスニングルートが入ると、このメソッドが呼び出され、現在の this インスタンスにルートオブジェクトが渡されます。 計算: { 現在のルート() { これを返します。$route }, }, 時計: $ルート: { ハンドラ(val) { if (val.name) { タグを追加します() } }, // 深い監視監視 deep: true } }, 方法:{ タグを追加します(){ //this.$store.dispatch は最初にアクションに送信され、ミューテーション内のメソッドを非同期的に処理し、状態の tags 値を変更します。this.$store.dispatch('user/addTag', this.currentRoute) },} この時点で、タグ配列にはすでに値が入っています。デフォルトの色は白なので、ページ上では見えません。次のステップは、選択したタグを強調表示することです。 <span v-for="(tag, index) タグ内" :key="index" class="tag-span"> <elタグ :closable="閉じることができる" :effect="setTagColor(タグ)" @close="タグを閉じる(タグ)" @click="toTagRoute(タグ)" > {{ tag.meta.title }} </el-tag> </span> 方法:{ setTagColor(タグ) { this.currentRoute.path === tag.path ? 'dark' : 'plain' を返します }, } この時点で、タグのレンダリングと選択は完了です。 2. タグを切り替える方法:{ toTagRoute(タグ) { this.$router.push({ パス: tag.fullPath || tag.path }) }, } 3. タグを削除する1 配列であるため、ユーザーがどれを削除したかを判断することはできません。そのため、ユーザーが現在選択しているタグを見つけるには、トラバースする必要があります。次にそれを削除し、ストア内の値を更新します。 方法:{ 閉じるタグ(タグ) { console.log(タグ、4444) this.$store.dispatch('user/delTag', タグ) this.toLastTagRouter(this.$store.state.user.tags)//削除する前のタグを強調表示します }, toLastTagRouter(タグ) { //ここで渡されたタグは削除されるため、splice==》を使用して元の配列を変更することはできません。slice==》は元の配列を変更せず、配列の最後の要素を取得します。const latestView = tags.slice(-1)[0] //タグ配列の最後の要素 console.log(latestView) (latestView !== 未定義 && latestView.path !== 未定義)の場合 { const { fullPath, meta, path, query } = latestView this.$router.push({ fullPath, meta, path, query }) } }, } //アクション delTag({ コミット }, タグ) { commit('delTag', タグ) }, //突然変異 delTag: (状態、タグ) => { //entries() オブジェクトはトラバース可能な配列 [0, {name: a, age: '20'}] になります //ForEachとmapもここで使用できます for (const [i, v] of state.tags.entries()) { (v.path === tag.path) の場合 { 状態.タグ.スプライス(i, 1) 壊す } } }, すべてのタグを削除 方法:{ すべてのタグを閉じる() { // すべてのタグを閉じて、1 つのタグだけを残します。this.$store.dispatch('user/delAllTags') const { fullPath, meta, path, query } = this.$store.state.user.tags[0] // 残りのタグルートにジャンプします this.$router.push({ fullPath, meta, path, query }) }, } //アクション delAllTags({ コミット }) { コミット('delAllTags') }, //突然変異 delAllTags: (状態) => { 状態タグの連結(1, 状態タグの長さ) }, これで、vue+element でページのトップタグを実装する方法についての記事は終了です。vue element トップタグに関するより関連性の高いコンテンツについては、123WORDPRESS.COM の過去の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。 以下もご興味があるかもしれません:
|
<<: MySQLが基礎データ構造としてB+ツリーを使用する理由
1.1 nginxインストールパッケージとインストールスクリプトをクライアントにコピーし、スクリプト...
目次1. Dockerの設定2. レジストリとネットワークを作成する3. コンテナを起動する環境説明...
目次序文オプションの連鎖ヌル結合呼び出されていない関数のチェック他の序文TypeScript 3.7...
背景一部のショッピング モールの Web ページで商品の詳細を開くと、購入数量を選択するためのカウン...
プロジェクト要件: 製品ツリー ノードをクリックすると、そのノードのすべての親ノードが取得され、表に...
目次序文1. 背景2. シミュレーションテスト3. 結論要約する序文もし私が罠に陥っていなかったら、...
使用法: date [オプション]... [+フォーマット]または: date [-u|--utc|...
この記事では、テーブルの動的な色の変更を実現するためのJavaScriptの具体的なコードを参考まで...
マイクリMyCLI は、自動補完と構文の強調表示を備えた MySQL、MariaDB、および Per...
フロントエンド開発では、Ajax、jQuery ajax、axios、fetch など、データ要求を...
基本構造:コードをコピーコードは次のとおりです。 <ダウンロード> <dt>...
k3dとは何ですか? k3d は、Docker で K3s クラスターを実行するための小さなプログ...
目次1. 切り捨て操作1.1 MySQL truncate はどのような操作を実行しますか? 1.2...
アンカーポイントの設定<a name="トップ"></a>...
この記事では、州、市、地区のドロップダウンリストのリンクを実現するためのJS + AJAXの具体的な...