【发布时间】:2016-02-13 07:04:20
【问题描述】:
我熟悉 Angular 的摘要循环以及它如何影响长列表和大模型值的性能。我只是好奇您是否有针对我的情况专门针对该问题的任何解决方法。
我正在构建一个应用程序,它可能需要也可能不需要用户在textarea 中输入大文本,例如错误日志,但由于与 大型模型 上的 2 路数据绑定相关的角度固有问题它导致我的应用程序挂起。
目前我要求用户在文件中附加大量内容。但我想知道是否有任何方法可以解决这个问题。
我能想到的一种潜在解决方法是不在文本字段上使用模型,而是使用 Angular 的轻量级 jquery api angular.element('#mytext').val() 访问文本。但是这种方法存在将 JS 代码与 DOM 紧密绑定的缺点,这不是一个好的做法。我对更多“棱角分明”的解决方案感兴趣。
这是演示性能问题的 plunkr。要查看挂起,请开始在文本区域中输入,您会遇到严重的延迟
【问题讨论】:
-
在用户介绍文字时尝试使用节流功能。
-
你的意思是去抖动吗?如果是这样,我已经有 1 秒的去抖,它会产生轻微的差异,但不够显着
-
throttle 将允许您在用户在 1 秒后完成引入字符时执行代码。但是debounce功能也可以,但是会在文字介绍时每1秒执行一次。
-
您需要模型在 keyup 时更新,还是可以将其限制为仅在更改时更新?查看 ng-model-options:docs.angularjs.org/api/ng/directive/ngModelOptions
标签: javascript angularjs performance data-binding