Étant donné l'élément de sélection suivant
<select ng-options="size.code as size.name for size in sizes "
ng-model="item.size.code"
ng-change="update(MAGIC_THING)">
</select>
Existe-t-il un moyen d'obtenir MAGIC_THING égal à la taille actuellement sélectionnée, j'ai donc accès à size.name
et size.code
dans mon contrôleur?
size.code affecte de nombreuses autres parties de l'application (URL d'image, etc.), mais lorsque le modèle ng de item.size.code
est mis à jour, il item.size.name
doit également être mis à jour pour les utilisateurs. Je suppose que la bonne façon de procéder consiste à capturer l'événement de modification et à définir les valeurs à l'intérieur de mon contrôleur, mais je ne suis pas sûr de ce que je peux passer à la mise à jour pour obtenir les valeurs appropriées.
Si c'est complètement la mauvaise façon de procéder, j'aimerais savoir la bonne façon.
<select>
: ng-init = "item = tailles [0]"ng-model="selectedItem" ng-change="update(selectedItem)"
Vous pouvez également obtenir directement la valeur sélectionnée en utilisant le code suivant
script.js
la source
vous pouvez aussi essayer ceci:
la source
Si la réponse de Divyesh Rupawala ne fonctionne pas (en passant l'élément actuel comme paramètre), veuillez voir la
onChanged()
fonction dans ce Plunker. Il utilisethis
:http://plnkr.co/edit/B5TDQJ
la source
la source
Si vous voulez écrire, nom, id, classe, multiple, requis, vous pouvez écrire de cette façon.
la source
Cela pourrait vous donner quelques idées
.NET C # Voir le modèle
Contrôleur Web Api .NET C #
Contrôleur angulaire:
Modèle angulaire:
la source
Vous devez utiliser "track by" afin que les objets puissent être comparés correctement. Sinon, Angular utilisera la façon native js de comparer les objets.
Donc, votre exemple de code se changerait en -
la source
Le filtre d'AngularJS a fonctionné pour moi.
En supposant que le
code/id
est unique , nous pouvons filtrer cet objet particulier avec AngularJSfilter
et travailler avec les propriétés des objets sélectionnés. Considérant l'exemple ci-dessus:Maintenant, il y a 3 aspects importants à cela :
ng-init="search.code = item.size.code"
- lors de l'initialisation de l'h1
élément en dehors de laselect
boîte, définissez la requête de filtre sur l' option sélectionnée .ng-change="update(MAGIC_THING); search.code = item.size.code"
- lorsque vous modifiez l'entrée de sélection, nous exécutons une ligne de plus qui définira la requête "recherche" sur la sélection actuellement sélectionnéeitem.size.code
.filter:search:true
- Passeztrue
au filtre pour permettre une correspondance stricte .C'est tout. Si l' ID
size.code
est unique , nous n'en aurons qu'unh1
élément avec le texte desize.name
.J'ai testé cela dans mon projet et cela fonctionne.
Bonne chance
la source
C'est le moyen le plus propre d'obtenir une valeur à partir d'une liste d'options de sélection angulaire (autre que l'ID ou le texte). En supposant que vous ayez un produit sélectionné comme celui-ci sur votre page:
Ensuite, dans votre contrôleur, définissez la fonction de rappel comme suit:
Expliqué simplement: donné que l'événement ng-change ne reconnaît pas les éléments d'option dans la sélection, nous utilisons ngModel pour filtrer l'élément sélectionné de la liste d'options chargée dans le contrôleur.
De plus, puisque l'événement est déclenché avant que le ngModel ne soit vraiment mis à jour, vous pourriez obtenir des résultats indésirables, donc une meilleure façon serait d'ajouter un délai d'attente:
la source