AngularJS提供双向数据绑定。
我构建了几个AngularJS应用程序,发现双向数据绑定是一个强大的功能,可以提高我的工作效率。
最近我越来越多地发布了声称双向数据绑定是反模式的帖子和文章。
示例:
大多数资源都支持"单向数据流"就像它被React / Flux推广一样。
Angular2 announced还有一段时间没有双向绑定......但是最新文档显示它实际上再次提供two-way databinding via ngModel(在属性和事件之上实现)结合位)
但是我还没有完全理解与AngularJS中的双向数据绑定相关的问题。
其他客户端技术(即swing,eclipse-rcp,winforms,wpf ...)也提供双向数据绑定,我从未偶然发现它是反模式的声明......
是否有一个规范示例可以轻松说明AngularJS中双向数据绑定可能导致的问题?
The video上面我链接似乎提示$scope.watch
是问题...但是通过绑定到{{1}上公开的函数,可以在没有$scope.watch
的情况下实现示例}。
如果您避免使用$scope
(即使用$scope
),那么双向数据绑定会出现什么问题?
答案 0 :(得分:9)
事实上,双向数据绑定的主要问题是性能。
当AngularJS发布时(1),此功能是开发人员大量使用该框架的首要原因。
如果没有一行代码,您可以通过从模型侧或视图侧更改其值来使元素完全动态化,在设置模型的任何位置都会更改该值。
在此功能中,最重要的工具是观看,它代表了双向数据绑定的所有问题。
随着应用程序的发展,观察者和观察者的数量也在增加 此外,经过一段时间,申请可以成为观察者的大汤 这将导致您的应用程序始终关注元素并在反面保持最新元素,并从浏览器中消耗大量资源。
这就是为什么我的建议是:尽可能避免观察者 在控制器中几乎不需要它们。
另见:
希望你能更清楚。
答案 1 :(得分:0)
双向数据绑定可能是其自身的问题:模型可以更新视图,视图可以更新模型,模型可以更新另一个模型...单向数据流更容易预测。