el-treeのdefault-checked-keys属性の変更が反映されない

el-treeのdefault-checked-keys属性の変更が反映されない

これは、筆者がMAUIアプリ開発で遭遇した問題と、いくつかのメモのまとめです。

最終更新 2023/01/18 22:02
水星梦月
読了目安 2 分
カテゴリ
.NET
タグ
.NET C# MAUI

サイト開発者Dotnet9がウェブサイトのバックエンドフロントエンドの記事編集カテゴリ管理機能を開発中に、element-uitreeコンポーネントの使用で問題に遭遇しました。個人で試行錯誤しても解決できず、以下はフロントエンドの達人が提供した解決策です。問題が何で、どのように解決したのか、ぜひご覧ください。皆さんのお役に立てれば幸いです。

本文開始


はじめに:element-uitreeコンポーネントを使用する際、default-checked-keys属性の値を動的に変更すればデフォルトのチェック状態もそれに応じて変わると思っていましたが、実際にはそうではないことがわかりました。

まず、公式サイトでのdefault-checked-keysの定義を見てみましょう:(見た限りでは問題ないように思えます)

そこで原因を探ってみました:defaultCheckedKeysの変更を監視して配列をループし、選択状態を追加しますが、defaultCheckedKeys配列が減少した場合、以前に設定された選択済みのkeyはキャンセルされません。

原因は:tree.vuewatchを使ってdefault-checked-keys値の変化を監視し、次のメソッドを呼び出していることです:

tree-store.js 内でこのメソッドがさらに使用されています:

やっと原因がわかりました。default-checked-keys値の変化を監視したときだけ、default-checked-keys配列をループしてその中の値に選択状態を設定しますが、選択状態をキャンセルする操作はありません。そのため、default-checked-keysの元の配列に選択すべきデータを追加すると、新しいノードは選択されますが、逆の場合は選択されません!!!

どうすればいいのでしょうか???

アイデア:

  1. 依存コードを修正する

このブログですでに触れています:el-tree 大量データの処理

  1. もう一度ドキュメントをよく見てアイデアを探しました:見つけました。setCheckedKeysメソッドを呼び出し、選択したいkey値の配列を渡すと、選択状態が再設定されます:

このメソッドを使用する際の注意点:

  1. treeが既にDOMに存在している状態で呼び出すこと。treeがロード完了していないとsetCheckedKeysは存在しません。そのため、this.$nextTick(callback)メソッドを使用する必要があります。このメソッドはDOMがロード完了した後にコールバック関数を実行します。

  2. このメソッドを呼び出した後、遅延ロードでノードを読み込んでいる場合、手動で設定した半選択状態が失われることがあります。半選択をリセットすることを忘れないでください。

本記事は転載です。

著者:水星夢月

原文タイトル:el-tree 中 default-checked-keys 属性変化不生效 (el-treeにおけるdefault-checked-keys属性の変更が反映されない)

原文リンク:https://blog.csdn.net/monparadis/article/details/114087838

さらに探索

関連読書

その他の記事
同じカテゴリ / 同じタグ 2023/09/21

【翻訳】XAMLベースのクロスプラットフォームフレームワークの比較分析

長年にわたり、XAMLベースのUIフレームワークは大きく発展してきました。これらのフレームワークは主に、クロスプラットフォームアプリケーションをサポートするAvalonia UI、Uno Platform、.NET MAUIを含みます。もしマイクロソフトがもっと早くFlutterのようなクロスプラットフォームUIフレームワークをリリースしていたら、これほど多くの選択肢はなかったかもしれません。

続きを読む
同じカテゴリ / 同じタグ 2026/04/22

各OSバージョンの.NETサポート状況(250707更新)

仮想マシンとテストマシンを使用して、各OSバージョンの.NETサポート状況を確認します。OSインストール後、対応するランタイムをインストールし、Stardustエージェントを実行できることを確認します(合格条件)。

続きを読む