AngularJS:调用函数时编号不更新

AngularJS: Number not updating when function is called?

本文关键字:编号 更新 函数 调用 AngularJS      更新时间:2023-09-26

HTML:

<div ng-controller="MainCtrl as ctrl">
    <input type="text" ng-model="ctrl.number">
    <h2>{{ctrl.number}}</h2>
    <button ng-click="ctrl.factorial(ctrl.number)">
        Click
    </button>
</div>

JS:

angular
    .module('myApp', [])
    .controller('MainCtrl', MainCtrl)
    function MainCtrl() {
        var ctrl = this;
        ctrl.number = 5;
        ctrl.factorial = function(num) {
            if (num === 1) {
                return 1;
            } else {
                return num * ctrl.factorial(num-1)
            }
        } // factorial
    }

这个数字只是保持原样,它的阶乘没有显示出来。我该如何解决这个问题?我真的很失落。

当您将ctrl.number传递给函数时,它是一个数字,因此它的值会被复制。在函数中,您使用递归计算相应的阶乘,但您只是返回它,而不是更改ctrl.number,这正是您真正想要的。

简单的解决方案是将ng-click="ctrl.factorial(ctrl.number)更改为ng-click="ctrl.number = ctrl.factorial(ctrl.number)