AngularJS仅计算一次随机值

时间:2014-02-22 16:54:34

标签: javascript 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不重新运行/刷新包含随机数的代码?

2 个答案:

答案 0 :(得分:1)

.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

答案 1 :(得分:0)

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

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