如果我有一个ng-repeat指令与我的初始数据绑定,
<!-- list 1-->
<li ng-repeat="data in datas">{{data.name}}</li>
我通过另一个ng-repeat和ng-model指令
更改数据 <!-- list 2-->
<li ng-repeat="data in datas">
<input type="text" ng-model="data.name">
</li>
以Angular的方式,任何方法都可以不立即列出1 ng-repeat数据刷新(点击“保存”按钮后)?
<button ng-click="save()">Save</button>
答案 0 :(得分:1)
您似乎是通过将数组扩展一个元素来在datas
中创建新项目?如果是这样,为什么不为表单使用不同的模型,并在单击保存按钮时将结果推送到数组data
?
类似地,在编辑项目时,克隆数组元素并使其成为结果表单的模型,然后在单击保存按钮时修改原始数组元素。
答案 1 :(得分:1)
您可以使用第二个(临时)克隆进行更改,并使用 angular.copy 将更改复制到实际对象。
The actual list:
<ul><li ng-repeat="item in items">
{{item.name}} (id: {{item.id}})
</li></ul>
Edit the list:
<ul><li ng-repeat="item in tempCopy">
<input type="text" ng-model="item.name" />
</li></ul>
<button ng-click="persistChanges()">Save</button>
<button ng-click="discardChanges()">Discard</button
在您的控制器中:
/* Persist the changes */
$scope.persistChanges = function () {
angular.copy($scope.model.tempCopy, $scope.model.items);
};
/* Discard the changes */
$scope.discardChanges = function () {
angular.copy($scope.model.items, $scope.model.tempCopy);
};
另请参阅此 short demo 。
最后,关于 angular.copy 的Angular文档中有一个类似的示例。