2014-05-05 3 views
0

J'ai exploré le projet Angular X-editable pendant un certain temps et je suis tombé sur ce comportement étrange. Chaque fois que je clique sur l'un des 3 composants 'select' et que j'essaie de changer la valeur à partir de la liste déroulante, la méthode 'showStatus (..)' se déclenche aussi pour les autres composants qui sont dans la ng-repeat frontière. (que vous pouvez vérifier via la console.)pourquoi cela se produit-il dans x-editable + ng-repeat

Pouvez-vous me dire pourquoi cela se produit? Est-ce que je manque quelque chose?

LINK ÉDITÉ -> Fiddle: http://jsfiddle.net/hrr4M/4/

<span ng-repeat="d in list" > 
    <a href="#" editable-select="d.status" e-ng-options="s.value as s.text for s in statuses"> 

     {{ showStatus(d.status) }} 

    </a> <br/> 
</span> 

Répondre

2

Le problème que vous avez est que votre fixation

{{ showStatus(d.status) }} 

feux de la fonction pour chaque élément, parce que chaque article se peuplé, juste rafraîchit et allume à nouveau, tous.

Ce n'est pas le bon endroit pour configurer ceci.

Je mis en place un violon modifié pour vous: http://jsfiddle.net/hrr4M/13/

Dans la déclaration de lien I ajouté

onaftersave="showStatus($data)" 

De cette façon, vous pouvez tirer une fonction après un élément a été sélectionné (voir docs pour onaftersave vs onbeforesave), et vous pouvez obtenir la valeur sélectionnée en utilisant $ data.

Maintenant, cela fonctionne déjà. Le problème est que votre liaison utilise toujours la même fonction, et donc allumer tout le temps.

J'ai dupliqué la fonction et l'ai renommée repeatFiller avec la même fonctionnalité mais en omettant les journaux de la console, vous pouvez donc voir que cela fonctionne. Vous pourriez modifier un peu mais je pense qu'il fait ce dont vous avez besoin.

Questions connexes