2014-05-14 1 views

Répondre

4

comme expliqué ici Binding inputs to an array of primitives using ngRepeat => uneditable inputs, oui vous pouvez, mais pas de cette façon

essayer cette

function ctrl($scope) { 
$scope.arr = [{name:'1', lastname: '2'}, 
       {name:'3', lastname: '4'}, 
       {name:'5', lastname: '6'}] 
} 

<div ng-repeat="person in arr"> 
    <input type="text" ng-model="person.name" /> 
    <input type="text" ng-model="person.lastname" /> 
</div> 

http://jsfiddle.net/jM28y/5/

+0

cette méthode que je connais très bien, merci – user2167582

+0

Il a travaillé, sauf si la validation a eu lieu. Et si au lieu de 'type =" text "' nous avons 'type =" url "'? – raisercostin

4

Non, il est impossible de lier une clé à une entrée.

La chose la plus proche que j'ai trouvé que vous pouvez faire est d'abuser de la propriété $index de ngRepeat et le lier à l'entrée. Vous ne pouvez pas modifier les clés pour les valeurs existantes, mais vous pouvez modifier la valeur affichée et créer de nouvelles paires clé-valeur. Je ne recommande nullement cela comme une solution, je voulais juste partager le hackery qui s'est ensuivi quand j'étudiais cette question.

jsFiddle: http://jsfiddle.net/DanielBank/v6tFG/

JavaScript:

function ctrl($scope){ 
    $scope.obj = { 
     '0': 'a', 
     '1': 'b', 
     '2': 'c', 
     'George': 'Clooney', 
    }; 
} 

HTML:

<div ng-app> 
<div ng-controller="ctrl"> 
    <div ng-repeat="value in obj"> 
     <input type="text" ng-model="$index"/> 
     <input type="text" ng-model="obj[$index]"/> 
     <input type="text" ng-model="value"/> 
    </div>  
    {{obj}} 
</div> 
</div> 
Questions connexes