AngularJS只计算一次随机值



在Angular中,我做了一个过滤器,将一个数字显示为两个随机数的总和。

 myApp.filter('toSum', function() {
  return function(text) {
    var number = parseInt(text);
    var x = Math.floor(Math.random() * number);
    var y = number - x;
    return x + ' + ' + y;
  };
});

不幸的是,由于随机变量 - "x + y"的值似乎在浏览器中一次又一次地更新 - 与代码运行的速度一样快。

我是否对错误的事情使用了过滤器? 我应该如何使 Angular 不重新运行/刷新涉及随机数的代码?

.filter('toSum', function() {
                        var Random = (function() {
                            var x = Math.random();
                                function get() {
                                    return x;
                                }
                                return get;
                        })();
                        return function(text) {
                            var z = Random();
                            var number = parseInt(text);
                            var x = Math.floor(z * number);
                            var y = number - x;
                            return x + ' + ' + y;
                        };
                    })

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Closures

所以,我记得绑定到 Angular $scope的函数会更新/刷新,但变量不会。

我在控制器中创建了一个变量来保存字符串"x + y" - 并在设置 x + y 的总和时更新该值(这种情况只发生一次)。

最新更新