vm。$ set()、vm。$ delete()

vm。$ set

機能:レスポンシブオブジェクトに属性を追加し、この新しい属性もレスポンシブであることを確認して、ビューの更新をトリガーします。vueは通常の新しいプロパティ(this.myObject.newProperty = 'hi'など)を検出できないため、リアクティブオブジェクトに新しいプロパティを追加するために使用する必要があります。注:オブジェクトをvueインスタンス、またはvueインスタンスのデータオブジェクトにすることはできません。

vm。$ delete

機能:オブジェクトのプロパティを削除します。オブジェクトがレスポンシブである場合は、削除によってビューの更新がトリガーされることを確認してください。このメソッドは主に、属性が削除されたことをVueが検出できないという制限を回避するために使用されます。
注:ターゲットオブジェクトをVueインスタンスまたはVueインスタンスのルートデータオブジェクトにすることはできません。

1つは、達成された効果

ここに画像の説明を挿入します

次に、元の実装方法は次のとおりです。

 //增加时间
      addTime(){
    
    
          if(this.ruleForm.startTime && this.ruleForm.endTime){
    
    
              var obj={
    
    }
              obj.startTime=this.ruleForm.startTime
              obj.endTime=this.ruleForm.endTime
              this.ruleForm.timeList.unshift(obj)
          }else{
    
    
              this.$message('请选择时间')
          }
      },
      //删除时间
      delTime(index){
    
    
          this.ruleForm.timeList.splice(index,1)
      },

第三に、現在の実装(別の同じ機能コード)

// 添加套餐分组
    addGroup() {
    
    
      let obj = {
    
    
            title:'',
            num:'',
            tableData:[
              {
    
    
                title:'西红柿炒鸡蛋',
                price:'¥20.00',
                num:'0',
                total:'100'
              }
            ]
          };
      let arr = this.ruleForm.groups;
      this.$set(arr, arr.length, obj);
    },
    // 删除套餐分组
    delGroup(index) {
    
    
      if (index == 0) {
    
    
        return;
      }
      this.$delete(this.ruleForm.groups, index);
    },

つまり、このセットには3つのパラメーターがあり、1つ目はデータ内のデータの位置を示し、2つ目は新しいデータのインデックスであり、3つ目は新しいデータ項目です。さらに、このセットには3つのパラメーターがあります。1つはデータ内のデータの位置を示すためのもので、2つ目は新しいデータのインデックスであり、3つ目は新しいデータ項目です。また、これ。S E Tはいる調製3番目のパラメータの数を第一番目は、ある手段アウト数のデータD A T Aにおける位置セット最初ジカルボンTHがある新規増加データケーブルリード最初の3番目であり、新たな増加データ項目数で別のT H I S deleteには2つのパラメーターがあります。1つはデータ内のデータの位置を示すためのもので、もう1つは削除されたデータのインデックスです。

おすすめ

転載: blog.csdn.net/weixin_42349568/article/details/113799549