5

Tôi có một vòng lặp ng-lặp lạiAngularJS: Các biến trong ng-mô hình

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

Tôi muốn trở thành $scope.age để $scope.age_data.name. Ví dụ: $ scope.age_Tan, $ scope.age_Jim ... Vì vậy, tôi đã thử ng-model="age_{{data.name}}" nhưng lỗi đó gây ra lỗi. Cách giải quyết vấn đề này?

Trả lời

14

Các "đúng" cách để làm điều này là, trong bộ điều khiển, làm điều này:

$scope.ages = {}; 

Sau đó, trong mẫu:

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

Nên làm việc ...

+0

Nó hoạt động chính xác những gì tôi muốn. Cảm ơn –

+0

No have chi, Tan. – Malvolio

+0

Chà. Bạn biết tiếng Việt không? :) –

1

Những gì bạn thấy ở đây sẽ không hoạt động chính xác đây là một vài lựa chọn

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

Tôi không chắc chắn lý do bạn muốn giữ tuổi của một người trong đối tượng/vùng chứa khác. Đây là giải pháp có thể giúp bạn suy nghĩ lại về thiết kế của bạn.

$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> 
Các vấn đề liên quan