Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Angularjs:未更新作为函数参数传递的作用域的count变量_Javascript_Angularjs - Fatal编程技术网

Javascript Angularjs:未更新作为函数参数传递的作用域的count变量

Javascript Angularjs:未更新作为函数参数传递的作用域的count变量,javascript,angularjs,Javascript,Angularjs,我正在重构一些代码,但有一个小问题。我将范围的count变量传递给func并递增,但原始值不会更新。以下是一个示例: angular.module('changeExample', []) .controller('ExampleController', ['$scope', function($scope) { $scope.counter = 0; $scope.change = function(counter) { counter++;

我正在重构一些代码,但有一个小问题。我将范围的count变量传递给func并递增,但原始值不会更新。以下是一个示例:

angular.module('changeExample', [])
    .controller('ExampleController', ['$scope', function($scope) {
      $scope.counter = 0;
      $scope.change = function(counter) {
        counter++;
        console.log(counter);
        console.log($scope.counter);
      };
    }]);

<div ng-controller="ExampleController">
  <input type="checkbox" ng-model="confirmed" ng-change="change(counter)" id="ng-change-example1" />
  <label for="ng-change-example2">Confirmed</label><br />
</div>
角度模块('changeExample',[]) .controller('ExampleController',['$scope',function$scope){ $scope.counter=0; $scope.change=函数(计数器){ 计数器++; 控制台日志(计数器); console.log($scope.counter); }; }]); 已确认
普朗克:

您可以在控制台中看到输出

你能给我一些解决方案吗?

我的代码

  <body ng-app="changeExample">
  <script>
  angular.module('changeExample', [])
    .controller('ExampleController', ['$scope', function($scope) {
      var vm = this;
      vm.counter = 0;
      vm.change = function(counter) {
        vm.counter++;
        console.log(counter);
      };
    }]);
</script>
<div ng-controller="ExampleController as e">
  {{e.counter}}
  <input type="checkbox" ng-model="confirmed" ng-change="e.change(e.counter)" id="ng-change-example1" />
  <label for="ng-change-example2">Confirmed</label><br />
</div>
</body>

angular.module('changeExample',[])
.controller('ExampleController',['$scope',function$scope){
var vm=这个;
vm.counter=0;
vm.change=函数(计数器){
vm.counter++;
控制台日志(计数器);
};
}]);
{{e.counter}}
已确认

请在更改函数中使用
$scope.counter++
而不是
counter++
。原始值未更新的原因是,您没有更新当前代码中的作用域(
$scope.counter

我认为你的问题在于你在混合变量,因为它的名字。也许更改
计数器
变量名可以帮助您:


示例-示例ngChange指令生产
angular.module('changeExample',[])
.controller('ExampleController',['$scope',function$scope){
$scope.counter=0;
$scope.change=函数(变量){
变量++;
console.log(变量);
console.log($scope.counter);
};
}]);
已确认
正确的方法是更新$scope.counter值:


示例-示例ngChange指令生产
angular.module('changeExample',[])
.controller('ExampleController',['$scope',function$scope){
$scope.counter=0;
$scope.change=函数(计数器){
$scope.counter++;
控制台日志(计数器);
console.log($scope.counter);
};
}]);
已确认

请再次仔细阅读我的问题,我不想只使用$scope.counter++,而是将作用域值传递给函数并从中递增。我不能只在我的原始代码中使用$scope.counter++。我认为您的代码运行良好,所以我不理解您的问题。我的立场是:1<代码>$scope.counter=02<代码>更改(计数器)3。函数接收
$scope.counter=0
so
counter=0
4<代码>计数器+5。以
计数器=1结束。?我误解了什么?是的,计数器是1,但$scope.counter是0当然,您在任何时候都不会更改它的值。如果您想增加它,
$scope.counter++
是正确的答案