【发布时间】:2013-12-05 11:57:40
【问题描述】:
问题是这样的:
$scope.model1 = [1,2,3,4,5,6,7];
$scope.model2 = $scope.model1;
$scope.model2.splice(2, 1);
<pre>{{model1}}</pre>
<pre>{{model2}}</pre>
返回:
[1,2,4,5,6,7]
[1,2,4,5,6,7]
需要:
[1,2,3,4,5,6,7]
[1,2,4,5,6,7]
为什么会这样?
更新:
解决方案:Everywhere 使用 angular.copy($scope.val)
我的代码不好:
$scope.$watch('checkedImages', function (newVal) {
if (newVal !== undefined && newVal[0] !== undefined) {
if ($scope.model.curSupplier === undefined) {
$scope.model.curSupplier = newVal[0].supplier_id;
$scope.model.curCheckedImages = newVal;
}
$scope.supplier = newVal[0].supplier_id;
}
});
对
$scope.$watch('checkedImages', function (newVal) {
if (newVal !== undefined && newVal[0] !== undefined) {
if ($scope.model.curSupplier === undefined) {
$scope.model.curSupplier = angular.copy(newVal[0].supplier_id);
$scope.model.curCheckedImages = angular.copy(newVal);
}
$scope.supplier = angular.copy(newVal[0].supplier_id);
}
});
【问题讨论】:
-
在任何地方使用
angular.copy并不是一个好主意。有时,您确实希望在更改指令中的值时修改原始对象(例如,如果您在ng-model中使用属性)。
标签: angularjs scope splice equals-operator