我有一个简单的 ng-repeat 列表,我在其中将当前列表项值分配给 Controller 上的另一个属性,如下所示:
<li ng-repeat="num in list">
<input type="text" ng-init="value = num" ng-model="value" />
<button type="button" class="btn btn-primary" ng-click="save()">Save</button>
</li>
但是当我点击“保存”按钮时,我得到了 $scope.value 的默认值设置。我希望显示特定输入文本的值。
这是 Controller :
angular.module('myApp', [])
.controller('MyController', function($scope){
$scope.value = false;
$scope.list = [0, 1, 2, 3, 4];
$scope.save = function() {
alert($scope.value);
}
});
我如何在调用保存函数时访问 Controller 中输入项的更新值。
这是相同的插件:plnkr
更新:我希望在不将其作为参数传递的情况下将值提取到 Controller 。
最佳答案
哇,我不敢相信大多数人都错过了这一点。如果您使用的是 Angular 1.2,那么您绝对应该检查 ngRepeat 指令中的 track by
关键字。
<li ng-repeat="num in list track by $index">
<input type="text" ng-model="list[$index]" />
<button type="button" class="btn btn-primary" ng-click="save()">Save</button>
</li>
底线在绑定(bind)时远离原始类型,因为它会给您带来同步问题。
伙计们,请花更多的时间和精力研究您的解决方案,而不仅仅是发帖求积分。
希望这对您有所帮助!
关于javascript - 双向绑定(bind)不适用于 ng-repeat,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29261507/