在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不重新运行/刷新包含随机数的代码?
答案 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的总和时,我会更新该值(这只发生一次)。