我有一个循环ng-repeat
<div ng-repeat="data in datas">
Name: {{data.name}} <input type="text" ng-model="age">
</div>
我希望$scope.age
成为$scope.age_data.name
。例如: $ scope.age_Tan , $ scope.age_Jim ...
所以我尝试了ng-model="age_{{data.name}}"
,但却犯了错误。
怎么解决这个问题?
答案 0 :(得分:16)
&#34;对&#34;这样做的方法是在控制器中执行此操作:
$scope.ages = {};
然后在模板中:
Name: {{data.name}} <input type="text" ng-model="ages[data.name]">
应该工作......
答案 1 :(得分:1)
你在这里展示的东西在这里完全没有工作
angular.module('myApp', [])
.controller('MyCtrl', function() {
var vm = this;
vm.datas = [{
name: 'thing1'
}, {
name: 'thing2'
}, {
name: 'thing3'
}];
})
&#13;
<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>
&#13;
答案 2 :(得分:0)
我不确定你为什么要把一个人的年龄留在另一个物体/容器中。这是一个可以帮助您重新考虑设计的解决方案。
$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>