iviewコンポーネントのi-selectには落とし穴があり、複数の選択が切り替えられた後、オプションがなくなり、ページが更新されない、ソリューション

vueデータを配列として使用すると、無限のループや非自動更新が発生しやすくなります。配列が参照によって割り当てられることは誰もが知っています。1つを変更する限り、元の配列が変更されます。その後、Vueはページを更新し、データの変更に応じてデータを再バインドしますが、再バインドされない場合があります。私が遭遇した主な2つのことがあります。
1.データキャッシング、これは非常に優れたソリューションです。関係者は、Vueが仮想ノードを使用することも説明しています。データが変更されていない場合、データは更新されません。更新する必要がある場合は、要素に主要な属性を追加できます。

:key="uniqueId"

2.選択コントロールを使用するときは、最初にコードhtmlを確認してください

 <div>
                        <radio-group v-model="showClassType" type="button" size="large">
                            <radio label="我的班级"></radio>
                            <radio label="学校班级"></radio>
                        </radio-group>
                    </div>
                    <div class="meta">选择班级</div>
                    <div v-if="showClassType=='我的班级'" class="task-choose-box">
                        <i-select  v-model="classid" filterable style="width:180px">
                            <i-option v-for="item in classList"  v-if="item.createUser==userid" :key="item.uuid" :value="item.uuid">{
   
   { item.classname }}</i-option>
                        </i-select>
                    </div>

                    <div v-if="showClassType=='学校班级'" class="task-choose-box">
                        <i-select  v-model="classid"   filterable style="width:180px">
                            <i-option v-for="item in classList" v-if="item.createUser!=userid"  :value="item.uuid">{
   
   { item.classname }}</i-option>
                        </i-select>
                    </div>

コードを簡単に記述します
。1。ここでは2つの文字列変数と1つの配列を使用します
。2。showClassTypeタイプを変更してオプションのコンテンツをトリガーし、classList内の対応するタイプの値を除外します。最後に、ドロップダウンボックスをクリックして値を選択し、クラスID
3にバインドします。インターフェイスは次のようになりますここに写真の説明を挿入
。4。ドロップダウンボックスの1つにデータがあり、もう1つにデータがない場合、1つのデータを選択して切り替えると、すべてのドロップダウンボックスの内容が表示されなくなります。
処理:showClassType出力classListを監視することにより、データがすべてそこにあることがわかりました

        watch: {
            showClassType:function(newVal,OldVal){
                this.classid= newVal==OldVal?this.classid:"";//最终处理方法

                console.log(this.classList)
                console.log(this.classid)
             console.log("切换学生会出问题噢噢噢噢")
                },

        },

それから、クラスIDを選択して切り替えたときにクラスIDをクリアしなかったのは、それが理由なのだろうかと思いました。テスト後は、まさにこんな感じでした。次に、
this.classid = newVal == OldVal?this.classid: ""; / /
対処する最終処理方法問題ありません

おすすめ

転載: blog.csdn.net/qq_35189120/article/details/86511945