函数

时间:2015-12-30 19:55:00

标签: javascript angularjs

我有一个图像,其源是使用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()

非常感谢任何有关解决这个问题的建议!

2 个答案:

答案 0 :(得分:1)

在这种情况下,

One-time binding可以很好地运作:

ng-src="{{:: showEmbellishment(image.attrib) }}"

答案 1 :(得分:1)

Angular需要在摘要上检查绑定值。当您与视图交互时,无论是按下按键,单击还是某些输入,都会触发摘要。在绑定函数的情况下,框架无法在不评估/调用函数的情况下知道值是否已更改。这就是为什么这个函数会被反复调用(至少在角度1.x中),所以你应该记住这一点以保持性能。

以下是有关如何解决此问题的两个想法:

  • ng-src绑定到作用域上定义的变量,并在热键的回调中更改它的值。
  • 使用自定义指令方法,类似于this one