javascript - 如何在 AngularJS 中实现 JavaScript 闭包?

标签 javascript angularjs closures

我正在使用一个函数来计算按钮的点击次数,如下所示:

$scope.counterFunc = (function(){
    var count = 0;
    console.log('i will be consoled only once');
    return function(){
        console.log(count);
        return ++count;
    }
})();

查看:

<button ng-click="counterFunc()">click me</button>
<div>  
    {{ count value }}
</div>

我能够控制计数值,但如何在 View 中显示它。

我可以使用$scope变量来绑定(bind)计数值来查看,但我担心的是count不应该被任何其他改变counterFunc()

之外的函数

还有其他方法可以做到这一点吗?...

最佳答案

您的counterFunc()每次执行 ng-click 时已经返回递增的值。您可以将其分配给 View 上的变量,如下所示

<button ng-click="count = counterFunc()">click me</button>
<div>
  {{ count }}
</div>

请注意count属性将通过上述解决方案在您的 $scope 中创建但这与 count 不同counterFunc() 内的变量和改变$scope.count不会影响var count 。您可以通过添加另一个 button 来测试这一点用于重置 $scope.count 的值

<button ng-click="count = counterFunc()">click me</button>
<div>
  {{ count }}
</div>
<button ng-click="count = 0">Reset</button>

现在,每次按重置 button 时,您都会看到,显示值将变为0 。但是,当您按click me时再次,它将从 var count 的最后一个值开始.

关于javascript - 如何在 AngularJS 中实现 JavaScript 闭包?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47765866/

相关文章:

javascript - 如何检测 YouTube 上的页面导航并无缝修改其外观?

javascript - 减少滚动事件的延迟

javascript - 在 javascript 中,window.function(){} 和 var variable = function 有什么区别?

javascript - Ag-grid:视口(viewport)未加载数据

angularjs - ng-messages 默认错误消息

javascript - 所有的 JavaScript Iterables 都有 next() 方法吗?

javascript - 在 angular.forEach 循环中等待 promise

JavaScript 闭包与本地

php - 从闭包内访问私有(private)变量

scala - `map` 和 `reduce` 方法在 Spark RDD 中如何工作?