Ci-dessous, je vais partager avec vous une méthode pour ajouter de nouveaux attributs d'un objet à la séquence de détection dans Vue. Elle a une bonne valeur de référence et j'espère qu'elle sera utile à tout le monde.
Ajouter de nouveaux attributs dans l'objet à la séquence de détection dans Vue
deepCopy(o1, o2) { // 将o2的内容拷贝给data中的o1 var key, i if (o2 instanceof Array) { for (i = 0; i < o2.length; i++) { if (o2[i] instanceof Array) { this.$set(o1, i, []) this.deepCopy(o1[i], o2[i]) } else if (o2[i] instanceof Object) { this.$set(o1, i, {}) this.deepCopy(o1[i], o2[i]) } else { this.$set(o1, i, o2[i]) } } } else if (o2 instanceof Object) { for (key in o2) { if (o2[key] instanceof Array) { this.$set(o1, key, []) this.deepCopy(o1[key], o2[key]) } else if (o2[key] instanceof Object) { this.$set(o1, key, {}) this.deepCopy(o1[key], o2[key]) } else { this.$set(o1, key, o2[key]) } } } else { o1 = o2 } }
Parce que Vue ne permet pas l'ajout dynamique du niveau racine attribut de type de réponses, vous devez donc déclarer l'attribut réactif au niveau racine avant d'initialiser l'instance, même s'il s'agit simplement d'une valeur nulle
Si un attribut n'est pas déclaré à l'avance et est ajouté ultérieurement, il ne le sera pas capable de détecter les changements Pour certaines structures fixes, des changements peuvent être détectés. Par exemple, je sais qu'un obj doit avoir les attributs key1 et key2, et je peux les initialiser à l'avance. Si ces choses sont dynamiques, je ne peux pas le dire à l’avance. Si vous l'ajoutez plus tard, vue ne pourra pas détecter le changement.
À ce stade, transmettez simplement la variable que vous avez déclarée dans data et la valeur que vous souhaitez attribuer à cette variable en tant que paramètres dans la fonction
Ce qui précède est ce que j'ai compilé pour tout le monde. J'espère qu'à l'avenir, cela sera utile à tout le monde.
Articles associés :
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!