我在tmp变量中分配了$scope.option
值,并在使用负值更改$scope.option
的所有值后对tmp变量执行操作。
var app = angular.module('myApp', []);
app.controller('myCtrl', function($scope) {
$scope.options=[1,2,3];
var tmp = $scope.options;
for(var i=0;i<tmp.length;i++){
tmp[i] = tmp[i]*-1;
}
console.log($scope.options);
document.getElementById("p1").innerHTML = $scope.options;
});
&#13;
<!DOCTYPE html>
<html>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.6.4/angular.min.js"></script>
<body>
<div ng-app="myApp" ng-controller="myCtrl">
<p id="p1"></p>
</div>
</body>
</html>
&#13;
答案 0 :(得分:3)
不要使用var tmp = $scope.options;
复制值,而是使用angular.copy()
。
var app = angular.module('myApp', []);
app.controller('myCtrl', function($scope) {
$scope.options=[1,2,3];
var tmp = angular.copy($scope.options);
for(var i=0;i<tmp.length;i++){
tmp[i] = tmp[i]*-1;
}
console.log($scope.options);
});
&#13;
<!DOCTYPE html>
<html>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.6.4/angular.min.js"></script>
<body>
<div ng-app="myApp" ng-controller="myCtrl">
<p ng-repeat="option in options">{{ option }}</p>
</div>
</body>
</html>
&#13;
答案 1 :(得分:2)
使用angular.copy();
函数将对象/数组复制到另一个临时数组
答案 2 :(得分:0)
在JavaScript中,当您将数组分配给变量时,您不会复制它 - 该变量指向相同的数组。因此,当您通过访问索引tmp
来修改数组的元素时,实际上是在修改原始数组的给定元素。
换句话说,tmp
和$scope.options
都引用相同的数组。
如果您希望tmp
获取$scope.options
引用的数组的副本,请使用slice()
函数:
var tmp = $scope.options.slice();
基本上,slice()
克隆原始数组并返回对新数组的引用。现在,您可以修改tmp
中的元素,而无需修改$scope.options