【问题标题】:Knockout's purecomputed equivalent in Angular?Knockout 在 Angular 中的纯计算等价物?
【发布时间】:2016-05-04 05:00:43
【问题描述】:
根据我对this article 的理解,(如果我错了,请纠正我)Angular 使用 $watch 的双向绑定模型等效于 Knockout 的计算 observables。
根据 KnockoutJS 文档,pure computed observables 可以防止内存泄漏并减少 CPU 开销。 AngularJS 有等价物吗?
我对 Knockout 或 Angular 都不是很精通,但都非常简短地使用过。现在,假设我有一个使用 KnockbackJS 的现有应用程序,我想将它转移到 AngularJS。现在我已经涵盖了路由和模板等内容,但是对于所有使用纯计算的实例,我该怎么办?
【问题讨论】:
标签:
javascript
angularjs
knockout.js
【解决方案1】:
AngularJS 1.x 和 KnockoutJS 很相似,但又非常不同。关于您的问题,它们实际上大相径庭:Angular 使用摘要循环进行更改检测,而 KnockoutJS 在后台使用基于订阅的方法。
是的,Angular 中的 watches 看起来很像来自 KnockoutJS 的 computeds,因为它们允许您进行手动“订阅”,在每个摘要周期中检查该订阅。
这也是比较苹果和橙子开始失去效力的地方。 computed 和 pureComputed 之间的区别是 KnockoutJS 的技术细节。 AFAIK 在 AngularJS 中没有直接的等价物,或者你可能会争辩说手表 是 的等价物。
你很可能有一个 XY 问题,你知道如何在 KnockoutJS 中解决 X:使用计算和纯计算。不要尝试将 Y 转换为 AngularJS,而是尝试将 X 转换为您的新情况,并找到一种惯用的方法来使用 AngularJS 来解决这个问题。