AngularJS提供了双向数据绑定(bind)。
我构建了几个AngularJS应用,发现双向数据绑定(bind)是一项强大的功能,提高了我的工作效率。
但是最近,我越来越多地在帖子和文章中提到双向数据绑定(bind)是一种反模式。
例子:
大多数资源都主张像React/Flux提倡的那样“单向数据流”。
Angular2 announced在一段时间内也没有双向绑定(bind)...但是最新文档显示它实际上又在提供two-way databinding via ngModel(在属性和事件绑定(bind)之上实现)
但是我还没有完全理解与AngularJS中的双向数据绑定(bind)有关的问题。
其他客户端技术(例如swing,eclipse-rcp,winforms,wpf ...)也提供双向数据绑定(bind),而我从来没有偶然发现它是一种反模式的说法...
是否有一个规范的示例可以轻松地说明AngularJS中双向数据绑定(bind)可能导致的问题?
我上面链接的The video似乎暗示了
$scope.watch
是问题所在……但是可以通过绑定(bind)到$scope.watch
上公开的函数来在没有$scope
的情况下实现该示例。如果您避免使用
$scope
(即使用controller as
),则双向数据绑定(bind)仍然存在哪些问题? 最佳答案
实际上,双向数据绑定(bind)的主要问题是性能。
AngularJS发布(1)时,此功能是开发人员大量使用该框架的最主要原因。
无需一行代码,您可以通过从模型端或 View 端更改其值来使元素完全动态,在设置模型的任何地方都可以更改该值。
在此功能中,最重要的工具是监视,它代表了双向数据绑定(bind)的所有问题。
随着应用程序的发展,观察者和被观察元素的数量增加。
而且,一段时间后,该应用程序可能会成为观看者的一大汤匙。
这将导致您的应用程序总是在反面监视元素并保持最新,并且这会消耗浏览器的大量资源。
这就是为什么我的建议是:尽可能避免观看者。
在 Controller 中几乎从来没有真正需要它们。
也可以看看 :
希望对您来说更清楚。
关于javascript - 为什么AngularJS中的双向数据绑定(bind)是反模式?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35379515/