您好我对Angularand函数的ng-repeat有更改值的问题。
我有这个ng-repeat
循环一个ObjectArray并有一个重置值的按钮。
<div ng-repeat="element in data.elements">
<button ng-click="reset(element)" >reset</button>
</div>
其中data.elements
是对象数组示例:
[{id:1, name:"element1"},{id:2, name : "element2"}];
在Controller
我设置$scope
中的函数Reset,它应该传递一个传递给默认对象的对象的副本:
$scope.reset = function(el){
$scope.defaultObject = {id:500, name:"default"};
el = angular.copy($scope.defaultObject);
}
但不起作用,但如果我这样做:
$scope.reset = function(el){
$scope.defaultObject = {id:500, name:"default"};
el.name = $scope.defaultObject.name;
}
有效。 我这样做(在这个例子中):
el = angular.copy($scope.defaultObject);
对象el
等于对象$scope.defaultObject
我的问题是,我可以复制整个对象而不循环所有属性吗?
答案 0 :(得分:0)
你是说,你的更新对象没有反映在用户界面上?您可以在分配对象后运行$scope.$apply()
来尝试强制更新范围。
答案 1 :(得分:0)
您正在将对象传递给重置功能,然后您将覆盖此对象。就是这样,没有任何反应,因为它不会影响data.elements
数组中的原始对象。
您需要使用不同的方法。按索引跟踪元素:
<div ng-repeat="element in data.elements track by index">
<button ng-click="reset(index)" >reset</button>
</div>
...然后修改data.elements[index]
:
$scope.reset = function(index){
$scope.data.elements[index] = {id:500, name:"default"};
}