【发布时间】:2015-03-13 01:42:38
【问题描述】:
我有一个大型 Angular 应用程序。我正在从 1.2 迁移到 1.3,并且在此过程中,从 bindonce 迁移到 Angular 1.3 的本机单向绑定。问题是,无论出于何种原因,观察者都不会像使用“价值稳定算法”https://docs.angularjs.org/guide/expression#value-stabilization-algorithm 那样取消注册。
像{{::var1}} 这样简单的东西会保留它的观察者。它导致与{{var1} 相同的总观察者计数。但是,<span bindonce="var1" bo-text="var1"></span> 效果很好。
不幸的是,我无法在 plnkr 中复制它。我确保我的应用程序正在运行 Angular 1.3.14。观察者不注销的任何原因?我怀疑这与应用程序使用的其他模块的组合有关,但不确定如何确认。
【问题讨论】:
-
这个值最初是
undefined吗?如果表达式为undefined,则与该表达式的观察者关联的观察者将“未实现”并且不会被注销。 -
不,该值应该立即具有值。我只是在我的控制器中执行 $scope.var1 = "test" ,然后使用三种绑定方法在 UI 中显示它。只有 bindonce 实际上删除了观察者。在使用类似示例的 plnkr 中,Angular 1.3 确实删除了观察者,因此我的代码库必须有所不同。我确定我在我的应用中使用 Angular 1.3。
标签: angularjs