angularjs中不必要的观察者

时间:2014-02-23 22:37:21

标签: angularjs

我创建了超级简单的角度应用,例如following

<html ng-app>
<script src="http://cdnjs.cloudflare.com/ajax/libs/angular.js/1.2.1/angular.min.js"></script>
<body>{{"hello"}}</body>
</html>

我发现$rootScope有一个$watcher表达式{{"hello"}},如果angularjs足够聪明,可以发现表达式是常量,那就更好了无需再看一遍。此功能(如果支持)在某些时候非常有用,例如{{ "" | toRemdomNumber }}{{ "key" | getResourceByKey }}。当范围处于摘要时,这节省了一些内存消耗和计算。

这可能吗?

我知道创建一个像bindonce这样的指令也非常简单,我想要的是angularjs core / $ interpolate服务应该足够智能解析表达式,这样就不会创建不需要的$ watcher。

1 个答案:

答案 0 :(得分:0)

我是Angular的新手,但是我发现这个指令在github上叫做bindonce。 https://github.com/Pasvaz/bindonce它将向您展示如何绑定常量一次。 (它在第一次绑定后摆脱了他们的观察者。)它甚至支持过滤器,它消除了不必要的手表。

以下是与过滤器一起使用的bindonce的示例。

<div bindonce="Person">
    <span bo-bind="Person.bill | currency:'USD$'"></span>
</div>

这是一篇关于如何尝试取消绑定观察者的文章。到目前为止我只是略过了它。就像我说的那样,我有点新鲜,所以我并不了解所有这些。 http://www.bennadel.com/blog/2480-Unbinding-watch-Listeners-In-AngularJS.htm