javascript - ng-model 对我来说太过分了。有什么选择只会在按钮点击时更新范围而不是每次都更新吗?

标签 javascript angularjs

我正在从事一个很大程度上基于表单的项目。有时一个页面中会有大约 1000 个表单元素,用户可以选择动态添加更多元素。

这会导致性能问题。在大多数情况下,每当用户更改输入值时,我都不需要 ng-model 的双向绑定(bind),但只有当用户单击提交或下一步按钮时,我才必须将值绑定(bind)到范围。

是否有任何简单的方法可以做到这一点,或者应该创建我自己的 ng-model 替代版本?我的目标是减少我页面上的 $watches。

最佳答案

具有 2000 个表单项和 2 路数据绑定(bind),该表单仍然非常灵敏。如果你真的需要更好的性能,你可以通过添加一个 ngModelOptions 指令来指定你只希望模型在“blur”事件上更新:

ng-model-options="{ updateOn: 'blur' }"

var app = angular.module('app', []);
app.controller('ctrl', function($scope) {
  $scope.items = [];
  for (var i = 0; i < 2000; ++i) {
    $scope.items.push({
      name: 'item ' + i
    });
  }
});
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.3.10/angular.min.js"></script>
<div ng-app="app" ng-controller='ctrl'>
  <ul>
    <li ng-repeat="item in items">
      <input type="text" ng-model-options="{ updateOn: 'blur' }" ng-model="item.name" />{{ item.name }}
    </li>
  </ul>
</div>

关于javascript - ng-model 对我来说太过分了。有什么选择只会在按钮点击时更新范围而不是每次都更新吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28289529/

相关文章:

javascript - 在 ng-click 中获取文本值

javascript - jquery 输入字段模式

javascript - 高度为 : auto; doesn't work 的 Angular 动画

html - 如何使用 angularjs 将文件上传到 blobstore?

angularjs - uibModalInstance 作为可选服务

javascript - 如何在Java脚本中判断一个数是奇数还是偶数

javascript - 你如何调试像这样的 IE 和 jQuery 错误

Javascript - 在两个日期对象之间创建数组

javascript - 从子指令调用父指令中的函数

javascript - Angular http post 仅在 Chrome 中在服务器上返回 403 错误