Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/458.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 角度属性绑定循环超出了应有的范围_Javascript_Angular_Typescript_Ionic Framework - Fatal编程技术网

Javascript 角度属性绑定循环超出了应有的范围

Javascript 角度属性绑定循环超出了应有的范围,javascript,angular,typescript,ionic-framework,Javascript,Angular,Typescript,Ionic Framework,在我的数组pitanje['odgovori']中,我有3个值,所以它应该只循环3次,但不知何故它会循环几次查看图片…所以[0,1,2]并循环几次…我的目标是将该值传递给changeColor() 并在此基础上与其他芯片进行对比,改变芯片颜色 HTML 解决方案是为changeColor函数使用管道。管道将获得i值,其变换函数将执行changecolor函数应该执行的操作 管道的好处是,如果与直接改变管道结果的状态无关,那么管道是纯净的,并且在变化检测后不会再次发生 另一个解决方案是使用lod

在我的数组pitanje['odgovori']中,我有3个值,所以它应该只循环3次,但不知何故它会循环几次查看图片…所以[0,1,2]并循环几次…我的目标是将该值传递给changeColor() 并在此基础上与其他芯片进行对比,改变芯片颜色

HTML


解决方案是为changeColor函数使用管道。管道将获得i值,其变换函数将执行changecolor函数应该执行的操作

管道的好处是,如果与直接改变管道结果的状态无关,那么管道是纯净的,并且在变化检测后不会再次发生

另一个解决方案是使用lodash装饰器和memoize装饰器

import {memoize} from 'lodash-decorators';

@memoize()
changeColor(value: number) {
    console.log(value);
}

如果使用相同的值调用,则不会进入函数。

何时调用changeColor()?我建议在调用它的地方发布一段代码。@codeherk查看ion chip[color]属性感谢您的努力更好的解决方案是向odgovor对象添加一个color属性,而不是使用方法来确定颜色。然后你可以事先计算颜色,然后做一些类似于[color]='odgovor.color'的事情,这可能会有所帮助-最好是修复它,如果你有时间的话,花点时间来正确处理它。由于角度变化检测,您的方法被多次调用,下面是一篇很好的文章来解释它
changeColor(value: number) {
    console.log(value);
}
import {memoize} from 'lodash-decorators';

@memoize()
changeColor(value: number) {
    console.log(value);
}