5

Ich habe eine Schleife ng-repeatAngularJS: Variablen in ng-Modell

<div ng-repeat="data in datas"> 
Name: {{data.name}} <input type="text" ng-model="age"> 
</div> 

I $scope.age zu $scope.age_data.name werden wollen. ZB: $ scope.age_Tan, $ scope.age_Jim ... So habe ich versucht ng-model="age_{{data.name}}", aber es macht Fehler. Wie löst man das?

Antwort

14

Der „richtige“ Weg, dies zu tun ist, um, in der Steuerung, dies zu tun:

$scope.ages = {}; 

Dann in der Vorlage:

Name: {{data.name}} <input type="text" ng-model="ages[data.name]"> 

Sollte funktionieren ...

+0

Es funktioniert genau was ich will. Danke –

+0

Không có chi, Tan. – Malvolio

+0

Wow. Du kennst Vietnamesisch? :) –

1

Was Sie hier zeigen, nicht genau hier arbeiten ein paar Optionen

angular.module('myApp', []) 
 
    .controller('MyCtrl', function() { 
 
    var vm = this; 
 
    vm.datas = [{ 
 
     name: 'thing1' 
 
    }, { 
 
     name: 'thing2' 
 
    }, { 
 
     name: 'thing3' 
 
    }]; 
 
    })
<html ng-app="myApp"> 
 

 
<head> 
 
    <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.3.15/angular.min.js"></script> 
 
</head> 
 

 
<body ng-controller="MyCtrl as myCtrl"> 
 
    Option 1 
 
    <div ng-repeat="data in myCtrl.datas"> 
 
    <input type="text" ng-model="data.age" /> 
 
    </div> 
 

 
    <br/> 
 
    <br/>Option 2 
 
    <div ng-repeat="data in myCtrl.datas"> 
 
    <input type="text" ng-model="myCtrl.age[data.name]" /> 
 
    </div> 
 
    <pre>{{myCtrl|json}}</pre> 
 
</body> 
 

 
</html>

0

Ich bin mir nicht sicher, warum Sie das Alter einer Person in einem anderen Objekt/Container behalten möchten. Hier ist die Lösung, die Ihnen helfen kann, Ihr Design zu überdenken.

$scope.people= [ 
    {name: 'Tan', age: 20}, 
    {name: 'Jim', age: 21} 
]; 

<div ng-repeat="person in people"> 
Name: {{person.name}} <input type="text" ng-model="person.age"> 
</div> 
Verwandte Themen