我有一个图像,其源是使用AngularJS动态设置的,如下所示:
ng-src="{{showEmbellishment(image.attrib)}}"
这将采用图像的特征并显示适当的点缀(点缀是一个图像)。这样可以正常运行。
我现在使用Angular HotKeys将一堆关键的新闻事件绑定到此页面:
hotkeys.add({
combo: 'd',
description: 'Do something',
callback: function(event, hotkey) {
//perform some action
}
});
我的问题是,当我按下添加为热键的'd'键时,它会执行它所要求的内容,但是我注意到showEmbellishment()
再一次被调用图像再次。这是一种开销,使d
键按下操作变得更慢。
我阅读了单向绑定,但我不确定如何实现它,以便每次按下不相关的操作键时都不会不必要地调用showEmbellishment()
。
非常感谢任何有关解决这个问题的建议!
答案 0 :(得分:1)
One-time binding可以很好地运作:
ng-src="{{:: showEmbellishment(image.attrib) }}"
答案 1 :(得分:1)
Angular需要在摘要上检查绑定值。当您与视图交互时,无论是按下按键,单击还是某些输入,都会触发摘要。在绑定函数的情况下,框架无法在不评估/调用函数的情况下知道值是否已更改。这就是为什么这个函数会被反复调用(至少在角度1.x中),所以你应该记住这一点以保持性能。
以下是有关如何解决此问题的两个想法:
ng-src
绑定到作用域上定义的变量,并在热键的回调中更改它的值。