AM Face à un problème dans l'affichage de la valeur sélectionnée dans la liste déroulante angulaire.
Ça marche lorsque je donne comme ça ne fonctionne pas, si je donne directement cette valeur p> JS strud>: p> < Strong> Solution: strong> p> Merci Samir-das. J'ai corrigé selon votre suggestion. p>
4 Réponses :
Eh bien, parce que p>
Lorsque vous mettez quelque chose dans le modèle en utilisant Alors, lorsque l'angulaire le mettez-le dans la liste de surveillance, c'était un objet (c.-à-d. J'espère que vous comprenez ce que je veux dire p> $ étendue.items [1] code> et
{nom: 'Deux', Âge: 27} code> est totalement différent. p>
{Nom: 'Two', Âge: 27} Code> est un objet totalement différent, tandis que
$ étendue.items [1] code> fait partie de l'objet
$ périmètre.items code> p>
{{}} code>, angulaire l'ajoutez dans sa liste d'observateurs. p>
{Nom: 'Two', Âge: 27} Code>) qui est différent de
$ étendue.items < / code>. p>
SEXEYItem code> est connecté avec l'objet que vous avez défini dans le contrôleur. En résumé, tandis que la vérification sale, angular vérifiera
sélectionnétem code> contre
{nom: 'Two', Âge: 27} code> pas contre
$ étendue.items code> < / p>
Avez-vous un moyen de résoudre ce problème?
Vous devrez utiliser le même objet. Vous pouvez rechercher d'abord l'article par lequel vous souhaitez démarrer, puis assigner cet élément trouvé
Ceci est pas strong> une fonctionnalité / un problème angulaire, c'est une conséquence de la fonctionnement de l'égalité d'objet dans JavaScript. Cet article fait un assez bon travail en expliquant Ce qui se passe d'une manière assez concise et donne quelques exemples. Consultez la source de La méthode isequale de Lodash ( Il vous mènera à la définition de Dans tous les cas, je ne pense pas qu'il y ait un moyen facile d'y parvenir en angulaire, vous devrez ré-écrire comment baseisequaldeep code> finalement) pour voir comment ce que vous essayez d'atteindre peut être fait dans Pure JS. P>
ng-options code> fonctionne et vous ne voulez probablement pas aller Là ... p>
dans des objets angulaires, des tableaux et des objets sont passés par référence tandis que les cordes, les nombres et les booléens sont passés par la valeur. Ainsi, angulaires interprète $ étendue.items [1] code> et
{nom: 'Two', Âge: 27} code> comme deux objets différents. C'est pourquoi votre reliure échoue lorsque vous faites
$ Poption.SelectedItem = {Nom: 'Deux', Âge: 27}; Code> directement et trouvez-le dans '$ SPAND.ITEMS'. P>
Comme expliqué dans les autres réponses, tandis que les deux objets peuvent avoir les mêmes propriétés et les mêmes valeurs, ils sont deux objets différents si angulaires ne les considèrent pas égaux. P>
Vous pouvez cependant utiliser la piste par code> Expression dans NG- Options pour spécifier une propriété qui décidera de l'égalité: p>
ng-options = "item.name pour l'élément dans les éléments Piste par élément.name" code> p>