我有一个字符串数组,我希望每个字符串都绑定到一个输入。
但是,编辑输入似乎不会更新数组(可能是孤立的范围问题?)。
建议?
function Ctrl($scope) {
$scope.fruits = ['Apple', 'Mango', 'Banana', 'Strawberry'];
}
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<div ng-app>
<div ng-controller="Ctrl">
<div style="margin: 20px 0" ng-repeat="fruit in fruits">
<input type="text" ng-model="fruit" />
</div>
Fruits: {{fruits}}
</div>
</div>
答案 0 :(得分:13)
您需要可以从$index
获取的数组引用。但是请注意,如果对ng-repeat
进行了任何过滤,那么这不会起作用,因为索引会基于过滤后的数组而不是原始
<div style="margin: 20px 0" ng-repeat="fruit in fruits track by $index">
<input type="text" ng-model="fruits[$index]" />
</div>
的 DEMO 强>
答案 1 :(得分:2)
好的,所以在我看来就像是
的情况&#39; ng-model需要模型名称中的一个点才能正常使用 范围,否则会创建一个本地范围&#39;
我建议将数据结构从普通字符串更改为包含字符串作为属性的对象,如:
$scope.fruits = [
{'title':'Apple'},
{'title':'Mango'},
{'title':'Banana'},
{'title':'Strawberry'},
];
现在,将它绑定到像这样的ng-model
<div style="margin: 20px 0" ng-repeat="fruit in fruits">
<input type="text" ng-model="fruit.title" />
</div>
然后它不会创建任何本地/子范围,而是能够绑定到title
数组中项目的fruits
属性。