在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 的总和时更新该值(这种情况只发生一次)。