我有一个 Angular Controller ,它使用 $http.get() 方法获取数据。我将响应数据分配给 $scope.foo 和 $scope.bar。
然后,我使用 ng-model="foo"将 $scope.foo 绑定(bind)到输入字段,然后使用 ng-click="buttonClick()"将 $scope 函数 $scope.buttonClick 绑定(bind)到按钮。
当我更改输入字段的值并选择按钮时,$scope.buttonClick 输出 $scope.foo 和 $scope.bar,并且它们似乎与新输入的值匹配。这很奇怪,因为我只绑定(bind)了 $scope.foo。为什么会发生这种情况以及如何解决它?
Controller :
angular.module('app')
.controller('controller', ($scope, $http) => {
$document.ready(() => {
$http.get('/data').then((res) => {
$scope.foo = res.data;
$scope.bar = res.data;
});
$scope.buttonClick = () => console.log($scope.foo, $scope.bar);
});
});
(使用 ES6 语法) https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/Arrow_functions
最佳答案
$scope.foo 和 $scope.bar 指向 res.data 相同的属性。您必须复制对象:
$scope.foo = angular.copy(res.data);
您正在分配对 res 对象的 data
属性的引用,而不是分配 data
属性的值
关于javascript - AngularJS $scope 变量无缘无故改变值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42847908/